Mot-clé - encapsulation

Fil des billets - Fil des commentaires

mercredi 29 décembre 2010

private, protected et public sont dans un bâteau...

Suite à mon billet sur l'intérêt des tests unitaires sur les méthodes privées ou protégées, j'ai eu beaucoup de commentaires au sujet de l'encapsulation et sur sa mise en œuvre.

Récemment, cousin @ub sans bermuda, l'un de mes collègues chez PMSIpilot,  a relancé le débat via un sondage, même si son objectif était plutôt de lancer un débat sur le thème la composition contre l'héritage.

J'ai donc décidé de prendre mon clavier pour à la fois essayer de répondre à ces interrogations et mettre à plat ma propre réflexion sur le sujet.

L'encapsulation, dans le cadre de la POO, consiste dans le fait de masquer à l'utilisateur d'une classe les détails de son implémentation.

En PHP, elle est mise en œuvre à l'aide des mots-clefs private, protected et public, qui sont applicables au choix sur les propriétés d'une classe ou ses méthodes.

Le mot-clef private permet donc très logiquement de masquer à l'utilisateur final les propriétés et les méthodes sur lesquelles il est appliqué, alors que public, à contrario, permet de rendre les éléments sur lesquels il est appliqué totalement accessibles.

Enfin, tout ce qui est protected a un statut particulier, dans le sens ou tout ce sur quoi il est appliqué se comporte comme étant privé pour l'utilisateur de la classe, et comme étant publique dans les classes dérivées.

Lors de la conception d'une classe, le développeur doit donc choisir entre ces différents niveaux de visibilité, et cela à bon escient, car un mauvais choix à ce niveau peut avoir des répercussions parfois très gênantes pour les utilisateurs.

Or, il n'y a aucune règle explicite gouvernant l'utilisation de ces mots-clefs, car elle dépend très étroitement du contexte.

Lire la suite

jeudi 18 novembre 2010

La guerre des tests

Dans le petit monde des tests unitaires, et comme dans beaucoup d'autres, qu'ils soient réels ou virtuels, il y a différents courants de pensées, différentes philosophies, qui s'affrontent dans des débats enfiévrés qui ont lieu sur Internet ou dans le monde réel, la plupart du temps autour d'une ou plusieurs bières.

Et depuis quelques temps, via le développement d'Atoum, mon framework de tests unitaires qui tire pleinement parti des possibilités offertes par PHP 5.3, je suis partie prenante de l'un de ces débats.

En effet, certaines personnes travaillant avec moi sur le projet n'ont pas la même définition que moi d'un test unitaire.

En conséquence, elles n'ont pas forcément la même vision que moi de ce que doit permettre ou non un framework de tests unitaires tel qu'Atoum.

Nous avons donc régulièrement des discussions sur différentes sujets, et c'est la synthèse de mes réflexions sur l'un de ces débats que je vous livre dans les lignes qui suivent.

Lire la suite