64 votes

SOLID vs. YAGNI

L'un des plus fréquents agruments j'entends qui ne respecte pas les SOLIDES principes dans la conception de classe est YAGNI (bien que l'arguer souvent de ne pas l'appeler comme ça):

"C'est OK que je l'ai mis à la fois fonction de X et de la fonction Y de la même classe. Il est si simple, pourquoi s'embêter à l'ajout d'une nouvelle classe (c'est à dire de la complexité)."

"Oui, je peux mettre toutes mes affaires de la logique directement dans le code de la GUI, il est beaucoup plus facile et plus rapide. Ce sera toujours le seul GUI et il est très peu probable que beaucoup de nouvelles exigences seront en."

"Si, dans le cas peu probable de nouveaux besoins, mon code est trop encombré, je n'ai refactoriser pour la nouvelle exigence. Donc votre " Que faire si vous avez besoin plus tard ... l'argument ne compte pas."

Quel serait votre plus convaincants les arguments contre une telle pratique? Comment puis-je montrer que c'est cher la pratiquer. Surtout pour quelqu'un qui n'a pas trop d'expérience dans le développement de logiciels.

7voto

EricBoersma Points 582

On dirait que vous vous êtes disputer avec un mur de briques. Je suis un grand fan de YAGNI, mais en même temps, moi aussi j'attends que mon code sera toujours être utilisé dans au moins deux endroits: l'application et les tests. C'est pourquoi des choses comme la logique d'entreprise dans le code de l'INTERFACE utilisateur ne fonctionnent pas; vous ne pouvez pas tester la logique métier distinct du code de l'INTERFACE utilisateur dans cette circonstance.

Cependant, à partir des réponses que vous décrivez, il semble que la personne n'est tout simplement pas intéressés à faire un meilleur travail. À ce stade, aucun principe est d'aller pour les aider; ils veulent seulement faire le minimum possible. J'irais même jusqu'à dire que ce n'est pas YAGNI la conduite de leurs actions, mais plutôt de la paresse, et vous seul qui ne vont pas à battre la paresse (presque rien ne peut, sauf une menace de manager ou de la perte d'un emploi).

2voto

knitti Points 3258

La bonne application de ces principes est souvent pas très évidente et dépend beaucoup de l'expérience. Ce qui est difficile à obtenir si vous n'avez pas à le faire vous-même. Chaque programmeur doit avoir eu des expériences des conséquences de faire le mal, mais bien sûr, il doit toujours être "pas mon projet.

Expliquer quel est le problème, si ils n'écoutent pas et vous n'êtes pas en mesure de les faire écouter, de les laisser faire des erreurs. Si vous êtes trop souvent la un devoir corriger le problème, vous devez peaufiner votre cv.

2voto

Alex Lo Points 971

De SOLIDES principes permettent logiciel pour s'adapter à des changements à la fois les exigences et les techniques de changements (nouveaux composants, etc), deux de vos arguments sont pour immuable exigences:

  • "il est très peu probable que beaucoup de nouvelles exigences seront en."
  • "Si, dans le cas peu probable de nouvelles exigences"

Pourrait-ce vraiment vrai?

Il n'y a pas de substitut à l'expérience quand il s'agit pour les diverses dépenses de développement. Pour de nombreux praticiens, je pense faire les choses dans l'moche, difficile à maintenir façon n'a jamais conduit à des problèmes pour eux (hé! la sécurité de l'emploi). Sur le long terme d'un produit, je pense que ces dépenses deviennent claires, mais faire quelque chose d'eux à l'avance est quelqu'un d'autre emploi.

Il y a quelques autres grandes réponses ici.

2voto

Jon Hanna Points 40291

Compréhensible, flexible et capable de corrections et d'améliorations sont toujours des choses que vous êtes va avoir besoin. En effet, YAGNI suppose que vous pouvez revenir et ajouter de nouvelles fonctionnalités quand ils s'avèrent nécessaires avec une relative facilité, parce que personne ne va faire quelque chose de fou comme bunging pertinence de la fonctionnalité dans une classe (YAGNI dans cette classe!) ou de pousser la logique métier à la logique de l'INTERFACE utilisateur.

Il peut y avoir des moments où ce qui semble fou maintenant était raisonnable dans le passé - parfois, les lignes de démarcation de l'INTERFACE utilisateur, vs d'affaires ou entre différents ensembles de responsabilités qui doivent être dans une autre classe ne sont pas claires, ou même de les déplacer. Il peut y avoir des moments où 3 heures de travail est absolument nécessaire en 2h de temps. Il ya des moments où les gens ne peuvent pas le droit de faire appel. Pour ces raisons des interruptions occasionnelles, à cet égard, va se produire, mais ils vont obtenir de la manière de l'utilisation de la YAGNI principe, pas être une cause de ça.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X