Quelle est la meilleure technique pour évolutive de construction (extensible), maintenable et logiciels à couplage lâche?

StackOverflow https://stackoverflow.com/questions/3888095

Question

je joue autour de la notion de « module » que certains cadres de mvc mettre en œuvre et il semble être une bonne solution, et aussi avec TDD, mais je pense qu'il doit y avoir quelque chose de plus, comme un modèle de conception que j'ai raté (I ne connaissent que quelques-uns), qui me permettra de créer des applications qui peuvent se développer (en code) sans limite.

Toutes les pensées?

modifier. Une autre bonne chose au sujet des modules est qu'ils peuvent être construits de manière à ce qu'ils sont indépendants l'application, afin qu'ils puissent être réutilisés

Était-ce utile?

La solution

Dans "Les faits et Sophismes de génie logiciel," Robert L. verre dit:

  

Fait 15. Reuse-in-the-petit est un problème bien résolu.

     

Fait 16. Reuse-in-the-grand reste un problème non résolu la plupart du temps.

     

Fait 17. Reuse-in-the-grand fonctionne mieux dans les familles de systèmes connexes.

En d'autres termes, vous pouvez réutiliser des modules, mais seulement entre les applications qui fonctionnent de façon très similaire. Essayer de faire des modules si polyvalent que vous pouvez les resuse dans any application est trop dur. Vous finissez par faire des modules qui sont si configurables qu'ils sont trop complexes à utiliser et contiennent beaucoup de code à des scénarios de poignée qui sont d'aucune utilité pour une application donnée.

Vous feriez mieux de coder un module personnalisé pour chaque application, qui fait exactement ce que chaque application a besoin, et pas plus. Ceci est particulièrement important pour un langage comme PHP, où le code est chargé sur chaque demande, de sorte que le volume de code a un impact significatif sur les performances.

Réutiliser plus fonctionnalité grains fins est différent. Les utilisations de dire, l'exploitation forestière, est raisonnablement similaire entre les applications, peu importe comment les différentes applications sont les uns des autres. Voilà pourquoi la plupart des cadres font très bien avec usage général classes de style de service.


Re commentaire de @A_Var:

Vous pouvez faire une classe réutilisable si vous connaissez la gamme de fonctionnalités possibles à l'avance, et par conséquent les parties qui ont besoin d'être extensible. Ceci est relativement facile pour une classe simple qui est utilisé de la même dans toutes les applications. Je l'ai mentionné l'exemple de l'exploitation forestière. C'est ce verre désigne comme réutilisation en la petite .

Mais nous ne parlons pas des classes simples. Si vous essayez de faire la même chose avec un module complexe (pensez à plusieurs classes pour gérer plusieurs écrans, formulaires, schéma de base de données, etc.), il est trop difficile d'écrire le code pour être suffisamment générique pour couvrir tous les besoins spécifiques chaque application. Vous finissez par avoir besoin plus code dans le module générique que la somme code total que vous auriez besoin d'écrire des modules séparés pour chaque application.

En outre, le test devient très coûteux, parce que toute modification apportée au module de base exige que vous re-test tous les applications qui utilisent et l'étendre.

En fin de compte, il est moins de travail à écrire un nouveau module pour chaque application, et vous pouvez gagner ce que l'efficacité, vous pouvez en utilisant des composants réutilisables qui sont plus à grains fins.

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