J'ai sauté sur un projet et je vois que les autres développeurs ajoutent beaucoup de logique dans les setters des propriétés synthétisées. Je comprends comment cela fonctionne, mais je pense que cela rend difficile la compréhension du déroulement du programme; en lisant le code, chaque fois que je voisself.something = whatever
, je vérifie toujours si something
le setter est surchargé.
Quelles sont vos opinions sur ce sujet? Pensez-vous que ce soit un signe de mauvaise architecture ou une solution élaborée?
Je serais heureux de lire plus à ce sujet si vous avez des liens / sources pertinents, il est tout simplement trop difficile d'obtenir de bons résultats Google, j'ai donc décidé de demander ici également.
Merci pour toute réponse et veuillez noter que je parle de l'objectif C au cas où vous n'auriez pas vu la balise (même si cela ne devrait pas être un problème spécifique à la langue, je suppose).
Réponses:
Non
Des propriétés ont été inventées pour permettre aux concepteurs de classe d'avoir une logique attachée à une interface pratique d'accès et d'affectation sur le terrain.
Combien c'est trop? Cela dépend des responsabilités de la classe. Voici quelques éléments qu'il est raisonnable de placer dans un configurateur de propriétés:
La programmation est plus facile lorsque les classes ont des interfaces qui rendent évident ce que la classe peut faire, sans faire réfléchir les appelants sur la façon dont cela est fait. Mettre la logique derrière les setters de propriétés permet aux classes de cacher leur implémentation derrière une interface simple. Pour certaines classes, aucune méthode n'est requise. Tournez simplement les boutons en définissant les propriétés et lisez la sortie en obtenant les propriétés.
la source
Les setters sont généralement utilisés pour changer l'état d'un objet sans effets secondaires significatifs ni calculs lourds; utilisez des méthodes et des fonctions pour cela. La principale raison de la mise en œuvre du setter est la modification et le maintien d'un état valide . Ainsi, limiter la plage, définir des indicateurs pour demander un nouveau calcul ou ajuster les propriétés associées est tout à fait correct.
la source
Je ne connais pas l'objectif C, mais comme vous le dites, cela semble une question assez générique pour tout langage OO. Tout d'abord et en fait lié à cela, la question de savoir si avoir des setters et des getters en premier lieu est un sujet de discussion (dans certains cas, leur existence est justifiée par l'utilisation d'un cadre ou d'une bibliothèque).
Je crois que le nom de la méthode devrait expliquer ce que fait la méthode et toute la méthode. De plus, la documentation associée à cette méthode doit la décrire de manière plus explicite. En ce sens, un nom de méthode sous la forme "set" + {substantif} ne devrait pas avoir d'effets secondaires autres que la définition de la valeur d'une variable et cela devrait être la seule action qui lui est associée. Vérifier que l'argument est valide, est acceptable mais il doit être décrit dans sa documentation.
la source