Comment étudier les modèles de conception?

J’ai lu environ 4 ou 5 livres sur les modèles de conception, mais je ne pense toujours pas que je me suis rapproché d’un niveau intermédiaire dans les modèles de conception?

Comment devrais-je étudier les modèles de conception?

Y a-t-il un bon livre pour les modèles de conception?

Je sais que cela ne viendra qu’avec de l’expérience, mais il doit y avoir un moyen de les maîsortingser?

    Le meilleur moyen est de commencer à coder avec eux. Les modèles de conception sont un excellent concept qui est difficile à appliquer en les lisant simplement. Prenez quelques exemples d’implémentations que vous trouvez en ligne et créez autour d’eux.

    La page Usine de données et d’objects est une excellente ressource. Ils passent en revue les modèles et vous donnent des exemples à la fois conceptuels et réels. Leur matériel de référence est également génial.

    J’ai lu trois livres et je n’ai toujours pas bien compris les motifs avant de lire Head First Design Patterns de OReilly. Ce livre m’a ouvert les yeux et m’a bien expliqué.

    texte alt

    Mes deux cents pour telle ou telle question

    Certaines personnes ont déjà mentionné, pratiquent et refactorisent. Je crois que le bon ordre pour en apprendre davantage sur les modèles est la suivante:

    1. Apprendre le développement piloté par les tests (TDD)
    2. Apprendre le refactoring
    3. Apprendre des modèles

    La plupart des gens ignorent 1, beaucoup pensent qu’ils peuvent en faire 2, et presque tout le monde va directement pour 3.

    Pour moi, la clé de l’amélioration de mes compétences en logiciels était l’apprentissage de TDD. Cela peut être une longue période de codage douloureux et lent, mais écrire vos tests en premier vous fait certainement réfléchir beaucoup sur votre code. Si une classe a besoin de trop de passe-partout ou se casse facilement, vous remarquerez rapidement les mauvaises odeurs

    Le principal avantage de TDD est que vous ne craignez pas de refactoriser votre code et vous oblige à écrire des classes hautement indépendantes et cohérentes. Sans une bonne série de tests, il est trop douloureux de toucher quelque chose qui n’est pas cassé. Avec le filet de sécurité, vous allez vraiment découvrir des changements radicaux à votre code. C’est le moment où vous pouvez vraiment commencer à apprendre de la pratique.

    Maintenant vient le point où vous devez lire des livres sur les modèles, et à mon avis, c’est une perte de temps complète à essayer trop. Après avoir compris que je faisais quelque chose de similaire, je ne comprenais que très bien les patterns ou je pouvais les appliquer au code existant. Sans les tests de sécurité ou les habitudes de refactorisation, j’aurais attendu un nouveau projet. Le problème de l’utilisation de modèles dans un nouveau projet est que vous ne voyez pas comment ils affectent ou modifient un code de travail. J’ai seulement compris un modèle de logiciel une fois que j’ai refait mon code dans l’un d’entre eux, jamais quand j’en ai introduit un nouveau dans mon code.

    Derek Banas a réalisé des tutoriels sur YouTube pour dessiner des motifs que j’aime beaucoup:

    http://www.youtube.com/playlist?list=PLF206E906175C7E07

    Ils peuvent être un peu courts, mais leur timing et leur présentation les rendent très agréables à apprendre.

    Pratique, pratique, pratique.

    Vous pouvez lire à propos de jouer du violoncelle pendant des années, et toujours ne pas être en mesure de mettre un arc à l’instrument et de faire quelque chose qui ressemble à de la musique.

    Les modèles de conception sont mieux reconnus comme un problème de haut niveau. celui qui n’est pertinent que si vous avez l’expérience nécessaire pour les reconnaître comme utiles. Il est bon que vous reconnaissiez qu’ils sont utiles, mais à moins que vous n’ayez vu des situations où ils s’appliqueraient ou se seraient appliqués, il est presque impossible de comprendre leur véritable valeur.

    Là où ils deviennent utiles, c’est lorsque vous reconnaissez des modèles de conception dans le code d’autrui, ou reconnaissez un problème dans la phase de conception qui correspond bien à un modèle; puis examinez le modèle formel et examinez le problème, et déterminez ce qu’est le delta entre eux, et ce que cela dit à propos du modèle et du problème.

    C’est vraiment la même chose que le codage; K & R peut être la “bible” pour C, mais sa lecture en couverture à plusieurs resockets ne donne pas une expérience pratique; il n’y a pas de remplacement pour l’expérience.

    Pratique pratique pratique. Je pense que 4 à 5 livres est même un exercice de lecture excessif sans une bonne pratique. Je pense que la meilleure façon de le faire est de commencer à restructurer vos projets actuels en utilisant les modèles. Ou si vous n’avez aucun projet sur lequel vous travaillez activement, faites-le vous-même à votre guise, puis essayez de refactoriser les modèles .

    Vous ne pouvez pas les apprécier pleinement si vous n’avez pas souffert des problèmes qu’ils résolvent. Et n’oubliez pas que ce ne sont pas des balles en argent – vous n’avez pas besoin de les mémoriser et de les pousser à appliquer à la volée. Mes deux centimes..

    Posez-vous ces questions:

    Que font-ils?

    Qu’est-ce qu’ils découplent / couple?

    Quand devriez-vous les utiliser?

    Quand ne devriez-vous pas les utiliser?

    Quelle fonctionnalité manquante leur ferait disparaître?

    Quelle dette technique subissez-vous en l’utilisant?

    Y a-t-il un moyen plus simple de faire le travail?

    Beaucoup de bons exemples ont été donnés. J’aimerais en append un:

    Mal les appliquer. Vous n’avez pas besoin de faire cela intentionnellement, cela se produira lorsque vous essayez de les appliquer lors de votre premier ajustement. Pendant ce temps, chaque problème que vous rencontrerez semblera correspondre exactement à un modèle de conception. Souvent, les problèmes semblent tous correspondre au même modèle de conception (Singelton est un candidat principal pour cela).

    Et vous appliquerez le motif et ce sera bien. Et quelques mois plus tard, vous devrez changer quelque chose dans le code et voir que l’utilisation de ce modèle particulier n’était pas si intelligente, car vous vous êtes codé dans un coin et vous devez refactoriser.

    Certes, ce n’est pas vraiment une réponse «faites-le-et-vous-apprenez-le-dans-21 jours», mais selon mon expérience, c’est le plus susceptible de vous donner un bon aperçu du problème.

    J’ai trouvé qu’il est un peu difficile de comprendre ou de comprendre les avantages de certains modèles jusqu’à ce que l’on comprenne les problèmes qu’ils résolvent et les autres (pire) les façons dont les problèmes ont été mis en œuvre.

    A part les livres GOF et POSA, je n’en ai pas vraiment lu, je ne peux donc pas vous donner d’autres recommandations. En réalité, il vous suffit de comprendre les domaines de problèmes et je pense que de nombreux développeurs moins expérimentés peuvent ne pas être en mesure d’apprécier les avantages des modèles. Ce n’est pas léger contre eux. Il est beaucoup plus facile d’accepter, de comprendre et d’apprécier les bonnes solutions lorsque l’on doit tout d’abord se débattre avec de mauvaises alternatives.

    Bonne chance

    Avez-vous essayé le livre Gang of Four?

    Modèles de conception: éléments du logiciel orienté object réutilisable

    En ce qui concerne les livres, je recommande les modèles Design Patterns Explained et Head First Design . Pour vraiment apprendre ces modèles, vous devriez regarder votre code existant. Recherchez les modèles que vous utilisez déjà. Regardez les odeurs de code et quels modèles pourraient les résoudre.

    Avez-vous lu “Design Patterns Explained”, par Allan Shalloway.

    Ce livre est très différent des autres modèles de dessins car il ne s’agit pas tant d’un catalogue de motifs, mais présente principalement un moyen de décomposer un espace de problème qui s’adapte facilement à des motifs.

    Les problèmes peuvent être décomposés en deux parties: les choses qui sont communes et les choses qui varient. Une fois cela fait, nous mappons les éléments communs à une interface, et les choses qui varient pour une implémentation. Essentiellement, de nombreux motifs entrent dans ce “modèle”.

    Par exemple, dans le schéma de stratégie, les éléments communs sont exprimés en tant que contexte de la stratégie et les parties variables sont exprimées en tant que stratégies concrètes.

    J’ai trouvé ce livre très provocant en contraste avec d’autres livres à motifs qui, pour moi, ont le même degré d’excitation que la lecture d’un annuaire téléphonique.

    Le dernier des nettuts .

    C’est une bonne ressource pour les débutants.

    J’ai dirigé quelques groupes de discussion sur les patrons de conception ( notre site ) et j’ai lu 5 ou 6 livres de modèles. Je recommande de commencer par le livre sur les schémas de conception en tête et d’assister ou de démarrer un groupe de discussion. Le livre Head First peut sembler un peu Hasboro au début, mais la plupart des gens l’aiment après avoir lu un chapitre ou deux.

    Utilisez la ressource exceptionnelle – A Learning Guide to Design Patterns de Joshua Kereivisky pour le classement des motifs et pour aider votre groupe de discussion. Le seul changement que je propose à la commande est de mettre la stratégie au premier plan. La plupart des développeurs d’aujourd’hui ont connu une bonne ou une mauvaise incarnation d’une usine, alors commencer avec Factory peut mener à beaucoup de conversation et de confusion à propos du motif. première rencontre.

    Je recommande HeadFirst DesignPattern. Lire le livre ne suffit pas, après avoir assimilé les concepts dont vous avez besoin pour trouver les réponses aux nombreuses questions qui se posent dans votre esprit, essayez de trouver les applications réelles dans lesquelles ces modèles peuvent être utilisés. Je fais la même chose et j’ai commencé à poser des questions même si ces questions semblaient stupides.

    Ma suggestion serait une combinaison de quelques-uns d’entre eux et d’parsingr certaines de leurs mises en œuvre. Par exemple, dans .Net, il existe des utilisations de modèles d’adaptateurs si vous examinez des adaptateurs de données, ainsi que quelques autres si l’on fait un petit tour dans la structure.

    Je ne connais pas le meilleur livre, mais les puristes pourraient dire Design Patterns: Elements of Réutilisable Object-Oriented Software

    En ce qui concerne mon préféré, j’aime Head First Design Patterns publié par O’Reilly. C’est écrit dans une voix de conversation qui me plaît. Lorsque je l’ai lu, j’ai passé en revue mon code source en même temps pour voir s’il s’appliquait à ce que je lisais. Si c’était le cas, j’ai refacturé. C’est comme ça que j’ai appris la chaîne de responsabilité.

    Pratique – Pratique – Pratique.

    Les modèles de conception ne sont que des outils – un peu comme des fonctions de bibliothèque. Si vous savez qu’ils sont là et leur fonction approximative, vous pouvez les extraire d’un livre au besoin.

    Il n’y a rien de magique dans les modèles de conception, et tous les bons programmeurs en ont compris 90% avant de sortir des livres. Pour la plupart, je considère que les livres sont les plus utiles pour définir simplement les noms des différents modèles afin que nous puissions en discuter plus facilement.

    La façon dont j’ai appris les modèles de conception est en écrivant beaucoup de logiciels vraiment terribles. Quand j’avais environ 12 ans, je n’ai aucune idée de ce qui était bon ou mauvais. Je viens d’écrire des stacks de code spaghetti. Au cours des 10 prochaines années, j’ai appris de mes erreurs. J’ai découvert ce qui fonctionnait et ce qui ne fonctionnait pas. J’ai inventé indépendamment la plupart des modèles de conception communs, alors quand j’ai entendu pour la première fois quels étaient les modèles de conception, j’étais très enthousiaste d’apprendre à leur sujet, puis très déçu que ce ne soit qu’une collection de noms que je connaissais déjà intuitivement. (cette blague sur l’enseignement de C ++ dans 10 ans n’est pas une blague)

    Morale de l’histoire: écrivez beaucoup de code. Comme d’autres l’ont dit, pratiquez, pratiquez, pratiquez. Je pense que jusqu’à ce que vous compreniez pourquoi votre conception actuelle est mauvaise et que vous cherchiez une meilleure solution, vous n’auriez pas une idée précise de l’application de divers modèles de conception. Les modèles de conception doivent vous fournir une solution raffinée et une terminologie commune pour en discuter avec d’autres développeurs, et non une solution intégrée à un problème que vous ne comprenez pas.

    L’idée de lire les modèles de conception, de les coder ne va pas vraiment aider l’OMI. Lorsque vous lisez ces livres: 1. Recherchez le problème de base que résout un motif de dessin particulier, en commençant par les motifs de création. 2. Je suis sûr que vous avez déjà écrit du code, parsingz si vous rencontrez les mêmes problèmes que les modèles de conception visent à fournir une solution. 3. Essayez de redessiner / re code code ou peut-être recommencer à zéro.

    A propos des ressources que vous pouvez vérifier

    1. http://www.dofactory.com
    2. Modèles de conception: éléments du logiciel orienté object réutilisable (série de calcul professionnel Addison-Wesley) par Erich Gamma, Richard Helm, Ralph Johnson et John M. Vlissides
    3. Modèles d’architecture d’application d’entreprise par Martin Fowler

    1 est un démarrage rapide, 2 sera en profondeur étude..3 expliquera ou devrait vous faire penser que ce que vous avez appris en 2 correspond à des logiciels d’entreprise.

    Mes 2 centimes …

    Je pense qu’il est également difficile d’étudier les modèles de conception. Vous devez en savoir plus sur la POO et certaines expériences avec le développement d’applications moyennes à grandes. Pour moi, j’étudie en tant que groupe de développeurs pour discuter. Nous suivons un guide d’apprentissage pour concevoir des modèles qu’ils ont terminé l’étude des modèles. Il existe des développeurs C # et JavaScript qui s’unissent. Il est intéressant pour moi que les développeurs écrivent des codes C # en JavaScript et que le développeur JavaScript fasse la même chose pour les codes C #. Après avoir quitté une réunion, je fais aussi des recherches et lis quelques livres à la maison pour les examiner. La meilleure façon de mieux comprendre et de me souvenir est de faire des blogs avec des exemples à la fois en C # et en JavaScript ici: http://tech.wowkhmer.com/category/Design-Patterns.aspx .

    Je suggérerais d’abord avant d’aller à chaque modèle de conception s’il vous plaît comprendre le nom des modèles. De plus, si quelqu’un connaît le concept, veuillez simplement expliquer et donner un exemple non seulement pour la programmation, mais aussi pour le monde de la lecture.

    par exemple:

    Méthode d’usine:

    Lire le monde: je ne fais que donner 5 $, 10 $ ou 20 $ et il produira des pizzas sans rien savoir de la façon dont il produit, je reçois juste une petite, moyenne ou grande pizza.

    Programmation: Le client passe simplement la valeur du paramètre $ 5, $ 10 ou $ 20 à la méthode d’usine et il retournera l’object Pizza. Le client peut donc utiliser cet object sans savoir comment le traiter.

    Je ne suis pas sûr que cela puisse vous aider. Cela dépend du niveau de connaissance des personnes qui participent à la réunion.

    Je pense que vous devez examiner certains des problèmes que vous avez rencontrés en tant que développeur lorsque vous avez retiré vos cheveux après avoir révisé votre code pour la 10ème fois en raison d’une nouvelle modification de conception. Vous avez probablement une liste de projets où vous avez senti qu’il y avait beaucoup de retouches et de douleur.

    Dans cette liste, vous pouvez dériver les scénarios que les modèles de conception ont l’intention de résoudre. Y a-t-il eu un moment où vous avez dû effectuer la même série d’actions sur différents ensembles de données? Aurez-vous besoin de capacités futures pour une application, mais vous voulez éviter de retravailler toute votre logique pour les classes existantes? Commencez par ces scénarios et revenez au catalogue des modèles et à leurs problèmes respectifs qu’ils sont censés résoudre. Vous êtes susceptible de voir des correspondances entre le GoF et votre bibliothèque de projets.

    Pour un débutant, les modèles Head First Design feraient l’affaire, une fois familiarisés avec tous les patterns, puis essayer de visualiser les objects temps réel dans ces patterns.

    Book vous aidera à comprendre les concepts de base, à moins que vous n’ayez mis en œuvre dans le monde réel, VOUS POUVEZ ÊTRE MAÎTRE des MODES DE CONCEPTION