Question

Quelle est la pénétration des modèles de conception dans le monde réel ?Les utilisez-vous dans votre travail quotidien – en discutant de comment et où les appliquer avec vos collègues – ou restent-ils davantage un concept académique ?

Apportent-ils réellement une valeur réelle à votre travail ?Ou s’agit-il simplement de quelque chose dont les gens parlent pour paraître intelligents ?

Note:Pour les besoins de cette question, ignorez les modèles de conception « simples » comme Singleton.Je parle de concevoir votre code pour que vous puissiez profiter de Modèle Vue Contrôleur, etc.

Était-ce utile?

La solution

Tout grand programme bien écrit utilisera des modèles de conception, même s'ils ne sont pas nommés ou reconnus comme tels.C'est ce que sont les modèles de conception, des conceptions qui sont répétées et répétées. naturellement se produire.Si vous interagissez avec une API laide, vous vous retrouverez probablement à implémenter un Facade pour le nettoyer.Si vous avez des messages entre des composants que vous devez découpler, vous pourriez vous retrouver à utiliser Observer.Si vous disposez de plusieurs algorithmes interchangeables, vous pourriez finir par utiliser Strategy.

Cela vaut la peine de connaître les modèles de conception, car vous êtes plus susceptible de les reconnaître et de converger plus rapidement vers une solution propre.Cependant, même si vous ne les connaissez pas du tout, vous finirez par les créer (si vous êtes un bon programmeur).

Et bien sûr, si vous utilisez un langage moderne, vous serez probablement obligé de l'utiliser pour certaines choses, car il est intégré aux bibliothèques standard.

Autres conseils

A mon avis, la question :"Est-ce que tu utiliser modèle de conception ?", à lui seul, est un peu imparfait car la réponse est universellement OUI.

Laissez-moi vous expliquer, nous, programmeurs et concepteurs, utilisons tous des modèles de conception...nous ne nous en rendons tout simplement pas toujours compte.Je sais que cela semble cliché, mais on ne suit pas de modèles, ce sont des modèles qui viennent à nous.Vous concevez des choses, cela peut ressembler à un modèle existant, vous le nommez ainsi pour que tout le monde comprenne de quoi vous parlez et que la justification de votre décision de conception soit plus forte, sachant qu'elle a été discutée. des nausées avant.

Personnellement, j'utilise les modèles comme outil de communication.C'est ça.Ce ne sont pas des solutions de conception, ce ne sont pas des meilleures pratiques, ce ne sont pas des outils dans une boîte à outils.

Ne vous méprenez pas, si vous êtes débutant, les livres sur les modèles vous montreront comment résoudre au mieux une solution en utilisant leurs modèles plutôt qu'une autre conception défectueuse.Vous apprendrez probablement de cet exercice.Cependant, vous devez comprendre que cela ne signifie pas que chaque situation nécessite un modèle correspondant pour être résolue.Chaque situation présente ici et là une bizarrerie qui vous obligera à réfléchir à des alternatives et à prendre une décision difficile sans réponse parfaite. C'est conception.

Les anti-modèles appartiennent cependant à une classe totalement différente.En fait, tu vouloir à activement évitez les anti-modèles.C'est pourquoi le nom anti-modèle est si controversé.

Pour revenir à votre question initiale :
"Est-ce que j'utilise des modèles de conception ?", Oui !
"Est-ce que je m'oriente activement vers les modèles de conception ?", Non.

Oui.Les modèles de conception peuvent être merveilleux lorsqu’ils sont utilisés de manière appropriée.Comme vous l'avez mentionné, j'utilise désormais Model-View-Controller (MVC) pour tous mes projets Web.Il s'agit d'un modèle très courant dans l'espace Web qui rend le code côté serveur beaucoup plus propre et bien organisé.

Au-delà de cela, voici quelques autres modèles qui peuvent être utiles :

  • MVVM (Modèle-Vue-VueModèle) :un modèle similaire à MVC ;utilisé pour les applications WPF et Silverlight.

  • Composition:Idéal lorsque vous devez utiliser une hiérarchie d’objets.

  • Singleton:Plus élégant que d'utiliser des valeurs globales pour stocker des éléments qui nécessitent réellement une seule instance.Comme vous l'avez mentionné, un modèle simple mais qui a son utilité.

Il convient de noter qu’un modèle de conception peut également mettre en évidence un manque de fonctionnalités linguistiques et/ou des lacunes dans un langage.Par exemple, les itérateurs sont désormais intégrés aux langages les plus récents.

En général, les modèles de conception sont très utiles mais vous ne devez pas les utiliser partout ;juste là où ils répondent le mieux à vos besoins.

J'essaie, oui.Ils contribuent en effet à la maintenabilité et à la lisibilité de votre code.Cependant, il y a des gens qui en abusent, généralement (d'après ce que j'ai vu) en forçant un système à suivre un modèle qui n'existe pas.

J'essaie d'utiliser des modèles s'ils sont applicables.Je pense que c'est un peu triste de voir les développeurs implémenter des modèles de conception dans le code juste pour le plaisir.Cependant, pour la bonne tâche, les modèles de conception peuvent être très utiles et puissants.

Il existe de nombreux modèles de conception au-delà du simple qui sont utilisés dans le « monde réel ».Bon exemple, Stackoverflow utilise le modèle de contrôleur Model View.J'ai utilisé Class Factories à plusieurs reprises dans des projets pour mon employeur, et j'ai vu de nombreux projets déjà écrits les utiliser également.

Je ne dis pas que tous les modèles de conception sont utilisés, mais beaucoup le sont.

Oui, cela se produit généralement lorsque nous commençons à concevoir quelque chose et que quelqu'un remarque que cela ressemble à un modèle existant.Nous l’examinons ensuite et voyons comment cela nous aiderait à atteindre notre objectif.

Nous utilisons également des modèles qui ne sont pas documentés mais qui émergent de nombreuses conceptions.

Attention, nous ne les utilisons pas beaucoup.

Oui, Factory, Chain of Responsibility, Command, Proxy, Visitor et Observer, entre autres, sont utilisés dans une base de code avec laquelle je travaille quotidiennement.En ce qui concerne MVC, ce site semble l'utiliser plutôt bien, et les développeurs ne peuvent pas dire assez de bonnes choses dans le domaine. dernier podcast.

Oui, j'utilise beaucoup de modèles de conception bien connus, mais je finis également par créer des logiciels dont je découvre plus tard qu'ils utilisent un modèle de conception « nommé ».Les designs les plus élégants et réutilisables pourraient être appelés « motif ».Cela ressemble beaucoup à des mouvements de danse.Nous connaissons tous la valse et le 2 temps, mais tout le monde n'a pas de nom pour le « bump and scoot », même si la plupart d'entre nous le font.

MVC est très connu donc oui, nous utilisons beaucoup de modèles de conception.Maintenant, si vous posez des questions sur les modèles Gang of Four, j'en utilise plusieurs car les autres responsables connaîtront la conception et ce vers quoi nous travaillons dans le code.Il y en a plusieurs qui restent assez obscurs pour ce que nous faisons, donc si j'en utilise un, je ne profite pas de tous les avantages de l'utilisation d'un modèle.

Sont-ils importants, oui, car cela vous donne une méthode pour parler de conception de logiciels d'une manière rapide, efficace et généralement acceptée.Pouvez-vous créer de meilleures solutions personnalisées, eh bien oui (en quelque sorte) ?

Les modèles GoF originaux ont été extraits du code de production, ils ont donc catalogué ce qui était déjà utilisé dans la nature.Ils ne sont pas purement ou même principalement académiques.

Je trouve le modèle MVC vraiment utile pour isoler la logique de votre modèle, qui peut ensuite être réutilisée ou travaillée sans trop de problèmes.Cela aide également à découpler vos classes et facilite les tests unitaires.J'ai écrit à ce sujet récemment (oui, plug sans vergogne ici...)

De plus, j'ai récemment utilisé un modèle d'usine à partir d'une classe de base pour générer et renvoyer la classe DataContext appropriée dont j'avais besoin à la volée, en utilisant LINQ.

Les ponts sont utilisés pour essayer de coller deux technologies différentes (comme Cacao et Rubis sur Mac par exemple)

Je trouve cependant que chaque fois que j'implémente un modèle, c'est parce que je le connaissais à l'avance.Une réflexion supplémentaire y est généralement apportée, car je trouve que je dois modifier légèrement le modèle original pour répondre à mes besoins.

Tu dois juste faire attention à ne pas devenir et astronaute architectural!

Oui, les modèles de conception sont largement utilisés dans le monde réel – et quotidiennement par de nombreuses personnes avec qui je travaille.

À mon avis, la plus grande valeur apportée par les modèles de conception est qu'ils fournissent un langage universel de haut niveau vous permettant de transmettre la conception de logiciels à d'autres programmeurs.

Par exemple, au lieu de décrire votre nouvelle classe comme un « utilitaire qui crée une parmi plusieurs autres classes basées sur une combinaison de critères d'entrée », vous pouvez simplement dire qu'il s'agit d'un "usine abstraite" et tout le monde comprend instantanément de quoi vous parlez.

Oui, les modèles de conception ou les modèles abstraits font partie de ma vie, là où je regarde, je commence à les voir.C’est pourquoi je suis entouré d’eux.Mais comme vous le savez, peu de connaissances est une chose dangereuse.Par conséquent, je vous recommande fortement de lire le livre GoF.

L'un des principaux problèmes liés aux modèles de conception est que la plupart des développeurs ne comprennent tout simplement pas l'idée ou n'y croient pas.Et la plupart du temps, ils se disputent à propos des variables, des boucles ou des commutateurs.Mais je crois fermement que si vous ne parlez pas le langage des modèles, votre logiciel n’ira pas loin et vous vous retrouverez dans un cauchemar de maintenance.

Comme vous le savez, l'anti-modèle est également une chose dangereuse et cela se produit lorsque vous avez peu d'expertise en matière de modèles de conception.Et refactoriser les anti-modèles est beaucoup plus difficile.Comme livre recommandé sur ce problème, veuillez lire « AntiPatterns :Logiciels de refactorisation, architectures et projets en crise".

Oui.

Nous les utilisons même dans mon travail actuel :Codage mainframe avec COBOL et PL/I.

Jusqu'à présent, j'ai vu Adaptor, Visitor, Facade, Module, Observer et quelque chose de très proche de Composite et Iterator.En raison de la nature des langages, ce sont principalement des modèles structurels qui sont utilisés.De plus, je ne suis pas toujours sûr que les gens qui les utilisent le fassent consciemment :D

J'utilise absolument des modèles de conception.À ce stade, je prends MVC pour acquis en tant que modèle de conception.La principale raison pour laquelle je les utilise est que je suis assez humble pour savoir que je ne suis probablement pas la première personne à rencontrer un problème particulier.Je démarre rarement un morceau de code en sachant quel modèle je vais utiliser ;Je surveille constamment le code pour voir s'il évolue naturellement vers un modèle existant.

J'aime aussi beaucoup Martin Fowler Modèles d’architecture d’applications d’entreprise.Lorsqu'un problème ou une tâche se présente, je consulte la section correspondante (il s'agit principalement d'un ouvrage de référence) et je lis quelques aperçus des modèles.Une fois que j'ai une meilleure idée du problème général et des solutions existantes, je commence à voir le chemin à long terme que mon code prendra probablement via l'expérience des autres.Je finis par prendre de bien meilleures décisions.

Les modèles de conception jouent définitivement un rôle important dans toutes mes idées « pour le futur ».

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