Quelles sont les meilleures ressources pour les modèles de conception et leurs utilisations?

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

  •  01-07-2019
  •  | 
  •  

Question

En ce qui concerne l’utilisation des modèles de conception, je suppose qu’il existe trois types de magasins. Ceux qui ne connaissent pas un modèle s'il le frappe au visage - préfèrent généralement l'approche Ctrl-C / Ctrl-V pour la réutilisation du code. Ceux qui passent des heures par jour à rechercher leur code hérité dans l’espoir de mettre en œuvre un modèle supplémentaire - ceux-ci consacrent généralement plus de temps à la refactorisation du code de programmes simples qu’il n’aurait jamais fallu en cent ans de maintenance. Et enfin, ceux qui empruntent la voie du milieu utilisent des modèles quand ils ont du sens et codent tout ce qui vient en premier pour du code minimalement exposé.

Je me demande si quelqu'un a déjà adopté une bonne approche pour une intégration équilibrée de l'utilisation des modèles dans le cycle de vie du développement logiciel. En outre, quelle est la meilleure ressource sur le Web pour les motifs, leurs facteurs de motivation et leur utilisation correcte?

Merci.

Était-ce utile?

La solution

Il existe de nombreuses familles de "modèles", mais prenez votre question dans son sens le plus large ...

Je recommanderais:

Hors connexion (mes favoris):

Hors ligne (populaire):

  • Modèles de conception GoF
  • Refactorisation de Fowler: amélioration de la conception du code existant

Autres conseils

Un bon usage des modèles dépend des connaissances et de l’expérience; il n'y a pas de formule à cela. Une bonne chose à faire est de faire appel à une personne expérimentée dans l'application des modèles pour réviser régulièrement le code de tous les membres de l'équipe afin de s'assurer qu'ils n'utilisent pas excessivement les modèles de conception. Ce ne sont pas des recettes préparées à l'avance. Ils ont besoin de compétences pour appliquer efficacement et cela doit être appris.

Mon premier et meilleur contact avec les modèles de conception a été le référentiel de modèles Portland .

Utilisation de " pattern " dépend dans une large mesure de

  1. la langue utilisée
  2. objectifs on aime atteindre.

Les motifs de conception peuvent être nommés surchargés dans des langages tels que C ++, Java, etc. Ils cachent la rigidité introduite avec toutes sortes de problèmes de dactylographie. Voici un lien sur le motif "survivre". dans des langues moins restrictives: http://norvig.com/design-patterns/

Un autre exemple est la programmation orientée aspect, dans laquelle les efforts peuvent être "introduits". dans une langue non "conçue" pour cela.

La philosophie des outils utilisés a également une grande influence. Il suffit de comparer, disons, les programmes et solutions PHP ou Visual Basic moyens pour Smalltalk, Common Lisp, Haskell, etc.

Les éléments de syntaxe ont également un impact important. Vous verrez des tonnes de boucles similaires, disons en C, C ++ (itérateurs), mais si vous cherchez des langages prenant en charge des fonctions d'ordre supérieur, vous ne trouverez que quelques boucles.

Vous devez ensuite voir de quelle manière les gens accèdent à la programmation, de manière ascendante ou descendante, de pyramides de croissance ou de construction fragmentées, ou de toute autre préférence individuelle.

Je suggère de lire le lien mentionné, puis de vérifier les implémentations dans "différent". langues ....

Cordialement Friedrich

Tout le monde utilise des modèles tout le temps. Ils pourraient simplement ne pas le savoir. Même une simple chose comme "parcourir une liste" est un motif.

Je pense que le meilleur moyen d’incorporer des motifs dans votre cycle de travail est tout simplement de les utiliser et de les référencer par leur nom lorsque vous en discutez et lorsque vous commentez votre code. Espérons que cela se traduira par une diffusion des connaissances.

Ainsi, par exemple, vous avez remarqué que ce que vous faites est très bien pour Observer. Vous dites à votre collègue: "Ce sera vraiment facile à faire si nous faisons de cet objet un observateur et que cet objet est son sujet."

Soit votre collègue comprend tout de suite - ce sont des modèles qui vous font gagner du temps - ou vous devez les éduquer, et la prochaine fois que vous mentionnez Observer, ils comprendront tout de suite.

En même temps, vous diffusez les connaissances et ils repèreront les occasions d'utiliser les nouveaux modèles qu'ils ont appris de vous. Cela va bien sûr dans les deux sens. La prochaine fois, ce sera peut-être eux qui vous apprendra un nouveau motif.

Tout cela suppose que votre collègue ne soit pas du genre à faire un signe de tête et à faire semblant de comprendre quelque chose quand ce n'est pas le cas. Vous avez besoin qu’ils disent: "Hé, vous avez mentionné Observer, je ne pense pas savoir ce que c'est."

Je pense que la meilleure ressource Web contenant des informations sur les modèles et le refactoring - http://sourcemaking.com

Je suis un grand fan de la série et ai lu beaucoup de leurs livres. Je vous recommande donc Head Premiers modèles de conception . Vous pouvez le lire en ligne via Safari Bookshelf d'O'Reilly, mais sa copie papier est également accompagnée d'une superbe affiche de modèles .

Je suis tout à fait d'accord avec le commentaire ci-dessus. J'utilise des modèles de conception là où je peux, mais je compte toujours sur le reste de mon équipe pour vraiment comprendre les avantages d'un modèle particulier. Sinon, vous vous retrouverez avec un code laid et un wrapper léger qui ressemble un peu au motif.

En aparté, http://www.developer.com contient quelques articles par mois relatifs à modèles de conception et leurs applications. Bonne chance!

Je pense que je devrais recommander le refactoring: améliorer la conception du code existant .

 Refactoring: amélioration de la conception du code existant
(source: 2020ok.com )

Nombreux exemples sur la manière de mettre en œuvre une utilisation judicieuse des modèles.

La définition et la réponse originale sont à l'origine du concept, dans modèles de conception . Ce livre traite du concept à un niveau trèsortical, plutôt que le discours de gestion qui s’est infiltré dans la région. Selon eux, les modèles de conception ne sont que des noms pour des idiomes communs; ils en énumèrent et justifient leurs positions.

Ils évitent le " modèle de conception à utiliser " type de question, au lieu de cela, le problème est-il: "Est-ce que je vais naturellement dans une zone bien connue? Si oui, d’autres expériences peuvent-elles m'aider? Les modèles de conception, pour moi, ne sont pas comme des composants préfabriqués que vous assemblez pour constituer une solution. Ce ne sont que des référentiels d’orientation pour les personnes confrontées à une situation similaire à celle que d’autres ont contrée, et elles donnent des noms permettant aux gens de se référer aux situations générales en conversation.

Les motifs de conception sont amusants en ce sens que vous ne savez où utiliser un motif que lorsque vous comprenez parfaitement le motif applicable. Des choses comme Strategy, Observer, Iterator que vous pouvez, après un peu de pratique, utiliser sans trop réfléchir. Si vous êtes en C #, vous utilisez tout le temps l’Itérateur (IEnumerable ...) sans le considérer comme un motif.

À mon avis, ces modèles simples sont les meilleurs. Vous avez déjà un travail à faire et essayer de résoudre votre problème de manière répétitive alors que cela ne lui va pas du tout, c'est une perte de temps et un mauvais code.

Mon conseil est de regarder les diagrammes uml pour un motif, et s'il est assez simple, essayez-le et apprenez-le suffisamment bien pour que vous puissiez le rappeler plus tard. Un modèle avec un contrat plus simple sera probablement plus utile plus souvent.

Je voudrais aller avec le livre de modèles de conception de Gang of Four moi-même

Je suis d’accord avec ces références, mais il n’ya pas de novice sympa. Pour commencer rapidement à apprendre les modèles de conception facilement:

Head First: modèle de conception

Ensuite, vous pourrez consulter les livres les plus avancés une fois que vous aurez une vue d’ensemble (de nombreux exemples pratiques; -))

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