Question

Je fais une nouvelle classe en PHP. Je ne prévois pas cette classe jamais être étendue. Dois-je faire embêter avec les membres de la classe privée et la mise en œuvre getter et fonctions setter?

Une partie de moi pense que c'est juste une perte de temps et ne sert qu'à gros mon code.

La classe est un curriculum vitae. Je vous écris dans le code pour montrer mon style de codage. La question est sera un employeur veut voir accesseurs, ou sera tout simplement que les choses encombrent?

Était-ce utile?

La solution

Je ne contrarient pas si je vous étais. Vous avez raison, que la décoration serait tout simplement encombrer votre classe.

Autres conseils

Je ne veux pas une nouvelle fois de répéter l'argument selon lequel même que vous ne vous attendez pas l'héritage maintenant, vous pouvez encore avoir besoin à l'avenir, mais ils sont encore plus de raisons d'utiliser accesseurs:

  • accesseurs vous permettra de mettre en œuvre facilement la validation de vos propriétés
  • Votre code suivra les directives du bon code et en tant que tel, il sera plus facile d'être lu par d'autres. Si je courais dans un fichier de code qui n'a pas utilisé accesseurs, je serais très sceptique à ce sujet et devrait le lire attentivement plusieurs fois.
  • Aussi ce n'est pas seulement une décision de classe par, mais une décision pour l'ensemble de votre projet. Est-ce que vous voulez avoir des accesseurs pour certaines classes vous en avez besoin et non pas pour d'autres? Je crois que la cohérence est importante.
  • Il existe des outils qui peuvent AutoGenerate écrire les accesseurs pour vous. Rappelez-vous que vous écrivez le code une seule fois, mais vous avez bien lu plusieurs fois,

Découvrez les méthodes magiques __get et __set, il va garder votre code propre et vous n'aurez pas à se sentir paresseux pour ne pas mettre Scopel variable.

public function __get($name)
{
  return $this->$name;
}

public function __set($name, $value)
{
  $this->$name = $value;
}

Il est évident que vous auriez plus en détail, mais qui va gérer vos accesseurs.

Vous ne pouvez jamais savoir que vous aurez pas besoin d'étendre la classe à l'avenir. Qu'est-ce que la classe est en train de faire? il est la complexité?

Encapsulation fait partie de la bonne conception orientée objet. Mais une bonne conception orientée objet est pas le but de la programmation. Le but est d'avoir des choses de travail et être en mesure de les modifier facilement en cas de besoin.

Vous pouvez tout simplement passer outre __get & __set pour autant que je comprends. http://php.net/manual/en/language.oop5.overloading.php

J'aime faire les propriétés dans ma classe protégée ou privée, puis utiliser accesseurs. J'utilise ensuite le code dans les setters pour vous assurer que les valeurs de propriété sont acceptées dans les plages. Je aime cette approche que je trouve débogage devient plus simple que je peux toujours être sûr qu'une valeur acceptée est d'être définie, ou une exception est levée. Il me donne aussi plus de confiance que lorsque je passe des objets autour des valeurs contenues dans les propriétés ne vont pas à cause de quoi que ce soit d'autre à faire exploser.

Si c'est un curriculum vitae, il est probable qu'ils se soucient tout autant (ou plus) au sujet de votre logique comme ils le font les petits détails comme les getters / setters.

Si c'était moi, je les publics sans getters / setters, mais inclure un commentaire ci-dessus, disant quelque chose le long des lignes de considérer » faire ces getters privés et en utilisant / setters en fonction du champ d'application et style préféré de code de l'équipe "

De cette façon:

  1. Votre code de CV n'est pas encombrées

  2. Ils comprennent que votre non seulement paresseux et faire tout publique sans raison

  3. Il montre qu'au lieu de suivre aveuglément un particulier style, vous envisageraient de le particulier l'application pour prendre une décision.

Voulez-vous faire spécial someting sur le plateau ou d'obtenir (ou tout simplement l'un d'entre eux privé)?

Dans le cas contraire, alors ne perdez pas votre temps sur ces derniers.

Vous ne gagnez rien à faire si vous ne les utilisez pas d'une manière « spéciale » et tout peut-être il est même ralentir

Si vous ne prévoyez pas d'avoir un comportement spécifique lors de la création ou accesssing les biens, il ne dure beaucoup.

Si vous devez avoir un comportement spécifique lors de l'accès ou de modifier les propriétés plus tard, vous pouvez toujours surcharger le __set et __get méthode.

Voir: http://php.net/manual/en/language. oop5.overloading.php

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top