54 votes

Quelle est l'importance réelle des Design Patterns ?

Quelle est l'importance réelle des Design Patterns ?

Je pense que la génération précédente de programmeurs n'utilisait pas beaucoup les Design Patterns (les personnes diplômées dans les années 80 et avant le milieu des années 90). Les jeunes diplômés le connaissent-ils en général et l'utilisent-ils beaucoup plus ?

8 votes

Pouvez-vous afficher les résultats de votre enquête ? Je suis intéressé par les résultats

3 votes

Étant donné que le tag "design-patterns" a été utilisé dans près de 1000 questions sur SO, je pense qu'à lui seul, il peut répondre à votre question... ou du moins à l'une de ces nombreuses questions qui contient une réponse.

1 votes

@Kwang bien sûr je vais poster quelques résultats. Y a-t-il un moyen d'ouvrir les résultats aussi ? J'aimerais les ouvrir si possible.

103voto

Javamann Points 1937

Nous utilisions des modèles de conception dans les années 80, mais nous ne savions pas qu'il s'agissait de modèles de conception.

0 votes

Est-il vrai que les modèles de conception s'appliquent principalement à la POO ? Avant la POO, les programmes étaient juste une série d'instructions ou de fonctions. Mais peut-être qu'un callback est en quelque sorte un modèle pour observateur et délégué. Et la programmation Windows des années 90 est basée sur un modèle de conception de boucle d'événement et d'observateurs, même sans utiliser la POO.

69voto

Matthew Vines Points 14425

À mon avis, le plus grand avantage des modèles de conception est qu'ils donnent aux développeurs un vocabulaire commun pour parler des solutions logicielles.

Si je dis "Nous devrions implémenter cette solution en utilisant le modèle singleton", nous avons un point de référence commun pour commencer à discuter si oui ou non c'est une bonne idée sans que je doive d'abord implémenter la solution pour que vous compreniez ce que je veux dire.

Ajoutez à cela la lisibilité et la facilité de maintenance qui découlent de solutions familières à des problèmes courants, au lieu que chaque développeur tente de résoudre le problème à sa manière, encore et encore.

Assez important. Les logiciels peuvent être réalisés sans eux, mais c'est certainement beaucoup plus difficile.

13 votes

Ainsi, tous les développeurs essaient de résoudre les problèmes de la même façon, qu'ils soient appropriés ou non. Le fait que l'exemple que vous avez trouvé soit Singleton est révélateur - je pense que ce modèle a causé à lui seul plus de mauvaises conceptions que tous les modèles de conception explicitement nommés ensemble n'ont jamais causé de bonnes conceptions.

22 votes

Mais n'êtes-vous pas heureux de pouvoir dire aux gens de ne pas utiliser le modèle singleton de certaines manières, et qu'ils sachent de quoi vous parlez.

3 votes

Le modèle Singleton peut être mal utilisé dans de nombreux cas, mais si l'on considère que l'alternative pour la plupart des personnes qui l'utilisent mal serait une abondance de variables globales, je pense qu'il serait difficile de blâmer une mauvaise conception sur l'existence du modèle Singleton.

43voto

Brian R. Bondy Points 141769

Ils ne sont pas absolument nécessaires, mais le bien l'emporte nettement sur le mal.

Le bon :

  1. Lisibilité du code : Ils vous aident à écrire un code plus compréhensible avec de meilleurs noms pour ce que vous essayez d'accomplir.
    • Maintenabilité du code : Permet de maintenir votre code plus facilement car il est plus compréhensible.
    • La communication : Ils vous aident à communiquer les objectifs de conception entre les programmeurs.
    • Intention : Ils montrent instantanément l'intention de votre code à quelqu'un qui apprend le code.
    • Réutilisation du code : Ils vous aident à identifier des solutions communes à des problèmes communs.
    • Moins de code : Ils vous permettent d'écrire moins de code car une plus grande partie de votre code peut dériver des fonctionnalités communes à partir de classes de base communes.
    • Des solutions testées et solides : La plupart des modèles de conception sont testés, éprouvés et solides.

Le mauvais :

  1. Des niveaux supplémentaires d'indirection : Ils fournissent un niveau supplémentaire d'indirection et rendent donc le code un peu plus complexe.
    • Savoir quand les utiliser : Ils sont souvent utilisés de manière abusive et dans des cas où ils ne devraient pas l'être. Une tâche simple peut ne pas nécessiter le travail supplémentaire d'être résolue en utilisant un modèle de conception.
    • Interprétations différentes : Les gens ont parfois des interprétations légèrement différentes des modèles de conception. Par exemple, le modèle MVC vu par django et le modèle MVC vu par Ruby on Rails.
    • Singleton : Dois-je en dire plus ?

1 votes

Je suis tout à fait d'accord, mais votre critique (1) semble s'appliquer à des modèles spécifiques plutôt qu'au concept de Design Patterns. Cependant, la plupart des modèles de conception courants sont basés sur des niveaux d'indirection.

1 votes

J'ai dû rire quand vous avez ajouté "Singleton". C'est une épine dans mon pied depuis plusieurs années ! !!

1 votes

:) Je l'ai ajouté surtout pour l'humour, mais l'état global et le fait de se restreindre à un seul exemplaire de quelque chose n'est pas une bonne chose de toute façon.

35voto

Michael Borgwardt Points 181658

Personnellement, je les considère largement surestimé et d'une valeur marginale . L'idée semble géniale, mais en fin de compte, il n'y a qu'une poignée d'éléments suffisamment courants et utiles pour mériter d'être mémorisés (et possibles à mémoriser).

Je dirais que leur effet net est négatif, en raison de l'affreuse suringénierie perpétrée par des personnes qui viennent d'être séduites par le concept et qui essaient de fourrer autant de motifs que possible dans leur code. Ce qui est peut-être encore pire, c'est le Le marteau de Maslow effet conduisant à une mauvaise conception car au lieu de trouver le modèle optimal, le développeur s'est souvenu d'un modèle de conception qui lui convient (mal).

5 votes

Le fait que les gens fassent preuve ou non de discernement ou qu'ils soient des suiveurs n'a rien à voir avec le fait que les modèles de conception soient surestimés et d'une valeur marginale. La première règle de la programmation est : "Pensez". Que certaines personnes remplacent cette règle par "Utilisez des modèles de conception" n'a aucun rapport avec l'utilité des modèles de conception lorsqu'ils sont utilisés à leur juste place.

5 votes

Justice, je suis désolé, mais vous ne semblez pas avoir rencontré le type de personne qui boit le kool-aid du design pattern, dont le code est devenu votre cauchemar de maintenance. Les modèles de conception en eux-mêmes ne sont peut-être pas mauvais dans les bonnes mains, mais comme une fonctionnalité douteuse d'un langage de programmation, ils invitent à l'abus et sont donc suspects en soi.

1 votes

Ce n'est pas orthogonal - c'est exactement le battage médiatique (et l'attrait de la "bonne idée") qui pousse les gens à remplacer leur jugement au cas par cas par "utiliser les design patterns". Et ce que je veux dire, c'est que si le "bon usage" des patrons de conception est bénéfique, ce bénéfice n'est pas plus important que l'abus généralisé.

8voto

micahtan Points 6457

Important n'est pas le mot que j'utiliserais. J'utiliserais le mot "utile". Donner aux développeurs un langage commun pour décrire les problèmes/solutions fréquents est utile - d'autant plus dans un environnement collaboratif.

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