Cette question sur SO parle de la correction de ce que le PO pensait être un code de jalousie . Un autre exemple où j'ai vu cette phrase astucieuse citée se trouve dans une réponse donnée récemment ici dans programmers.SE. Bien que j'aie laissé un commentaire à cette réponse demandant des informations, je pensais que cela aiderait les programmeurs suivant les questions-réponses à comprendre ce que l'on entend par le terme " envie de fonctionnalités" . N'hésitez pas à éditer d'autres tags si vous le jugez utile.
53
Réponses:
Envie de fonctionnalité est un terme utilisé pour décrire une situation dans laquelle un objet accède aux champs d'un autre objet afin d'effectuer une sorte de calcul ou de prendre une décision, plutôt que de demander à l'objet d'effectuer le calcul lui-même.
Comme exemple trivial, considérons une classe représentant un rectangle. L'utilisateur du rectangle peut avoir besoin de connaître sa zone. Le programmeur peut exposer
width
etheight
champs puis faire le calcul en dehors de laRectangle
classe. Sinon,Rectangle
pourrait garder lewidth
et lesheight
champs privés et d' unegetArea
méthode. C'est sans doute une meilleure approche.Le problème avec la première situation, et la raison pour laquelle il est considéré comme une odeur de code, réside dans le fait qu’elle casse l’encapsulation.
En règle générale, chaque fois que vous utilisez fréquemment les champs d'une autre classe pour effectuer toute sorte de logique ou de calcul, envisagez de déplacer cette logique vers une méthode de la classe elle-même.
la source
Il est possible que l'utilisation d'une autre méthode de classe / struct soit étendue, lorsque votre classe / structure est un conteneur de données. Généralement, vous pouvez faire quelque chose avec ces données sans contexte externe.
De telles classes peuvent toujours contenir une logique interne, mais le plus souvent, elles sont utilisées en tant que conteneurs:
@Jhewlett dans sa réponse se réfère à cet article pour prouver qu'il ne faut pas utiliser les autres membres du groupe de manière intensive, mais il existe une autre situation de code odeurs décrite ici avec les avocats, mon exemple:
la source