7
votes

Modèles, meilleures pratiques et code de nettoyage

Je me trouve souvent en train de lire des livres et des articles qui décrivent les modèles, les meilleures pratiques et comment écrire "Clean Code". Cependant, certains de ces concepts semblent simplement être incontrôlés et obscurcir parfois l'essence du problème sous-jacent, ce qui rend le code plus difficile à relier au domaine de la modélisation du domaine.

À quelle fréquence vous trouvez-vous refactez un morceau de code qui fonctionne bien en faveur d'un «modèle?» Avez-vous rencontré une situation où le «modèle» a réellement compliqué le code ou obscurcit sa signification? J'ai senti de cette façon de retourner un moment après avoir vu une solution à un problème que j'ai résolu avec une classe simple réécrit avec des lambdas et des fermetures.

Je luttise avec cela et je suis curieux de savoir comment les autres approchent de la bonne balance.


8 Réponses :


17
votes

Vous ne devez jamais refroidir votre code simplement pour le rendre apte à un modèle que vous avez lu dans un livre.

Les motifs vous aident vraiment à former votre cerveau en termes de réflexion sur une bonne conception de logiciels. Je dirais réellement que j'ai acquis une grande partie de mes compétences en matière de programmation et de mes connaissances en lisant des livres de modèle et en leur réfléchissant à leur sujet et en apprenant à comprendre comment ils travaillent et quels avantages ils vont vous donner. Et c'est en fait la clé. Leur but est de faciliter les choses, plus maintenues, plus faciles à tester, etc. ... ne pas rendre votre vie plus difficile :)

Je pense que c'est aussi la "difficulté". Les motifs vous donnent un cadre, un point pour commencer lorsque vous rencontrez un problème. Exemple: Vous voulez vraiment appuyer sur votre code, mais vous ne pouvez pas tout simplement parce que cela dépend de la logique de l'UI ou est trop couplé. C'est votre problème, vous pouvez donc accéder à une solution en connaissant le modèle MVC et le concept d'injection de dépendance et de CIO. Ils peuvent vous donner un point de départ puisque le MVC, par exemple, vous explique sur un concept de haut niveau d'un observateur, observable, vue du contrôleur, etc. et comment ils sont liés les uns aux autres. C'est alors votre tâche comme un bon programmeur de choisir la bonne approche et de l'étendue que vous trouvez qu'il est raisonnable d'appliquer le motif. Ne pas simplement l'appliquer, car le modèle vous dit. N'oubliez pas que c'est juste une image, vous pouvez modifier et adapter cela S.T. Il convient à vos circonstances spécifiques.


0 commentaires

0
votes

iiabdfi. Si ce n'est pas cassé, ne le répare pas.

En d'autres termes, la raison uniquement de re-écrire "un morceau de code qui fonctionne bien" comme vous le mettez, si vous devez généraliser ce qu'il ne fait pas ce même code utilisable.

Dans ce cas, l'utilisation d'un motif peut être un avantage pour déterminer la manière de réaliser une réévaluabilité efficacement, mais le motif doit être un outil , pas l'objectif final.

Mind You, que d'utiliser des motifs ou non est une question complète et je trouve que c'est la meilleure réponse par la première réponse (acceptée) à cette question à la question . En bref, si vous êtes un bon développeur, vous utiliserez des modèles, que vous sachiez ou non, car tout un modèle est une solution de bonne et souvent observée à une classe spécifique de problèmes de conception. (J'étais dans cette situation - j'ai au fil des ans créé ou a été enseignée et j'utilisais à plusieurs reprises, que des conceptions utiles ne soient pas à raconter un jour que ces choses s'appellent des modèles et que quelqu'un leur a donné des noms mignons).


0 commentaires

0
votes

En fait, juste récemment, j'ai eu un argument à Twitter. J'ai invité des programmeurs à "Modèles de conception de Barcamp". Mais un gars a commencé à dire qu'il n'y ait aucun sens dans un tel barcamp, puisque vous connaissez des modèles ou non. C'est comme pour atteindre le Nirvana, a-t-il déclaré. Mais je ne suis pas d'accord. Nous sommes tous des ingénieurs. et apprendre à écrire un bon logiciel, partiellement, provient des abstractions. Mais encore une fois, ça ne suffit pas. Apprenez d'autres langages de programmation, paradigmes, étendez vos connaissances de l'outil que vous utilisez, lisez le code de logiciel Open-Source écrit dans votre langue préférée et vous deviendrez un meilleur programmeur (si vous avez la chance suffisamment HUH) < / p>

Répondre à votre question. Oui, certaines personnes pensent qu'ils peuvent appliquer des modèles. Mais parfois, ils prennent le modèle qui ne correspond pas à leur problème. J'aime dire que tous les outils sont les meilleurs pour ce qu'ils sont destinés. Ainsi, les motifs sont les mêmes. Si vous n'êtes pas sûr, mieux parler à votre architecte. Recherchez quelles sont les meilleures pratiques, pourquoi les modèles sont utilisés, quel genre de possibilités / difficultés cela donnera-t-il? Ce ne sera-ce pas une surcharge? Le code sera-t-il toujours lisible et favorable? Si "oui", allez-y.


0 commentaires

5
votes

Mon conseil est de Gardez votre conception simple aussi longtemps que cela est pratiquement possible - sans sacrifier la maintenabilité . .

Un bon design orienté objet basé sur le motif propose de nombreuses petites classes très spécialisées. La plus simple des fonctionnalités peut toucher de nombreuses classes. Ce qui fait que cela prend du temps à apprendre / comprendre le design. L'avantage de cette "bien-efficace" est que le code est maintenu - une petite modification des exigences nécessite généralement un petit changement de code localisé.

Le plus complexe de votre système est, plus vous pouvez vous éloigner avec une conception directe. Mais comme un système devient plus grand et plus complexe, le compromis échoue vers une conception plus complexe pour la maintenabilité.


0 commentaires

1
votes

Vous ne pouvez pas frapper la balle si vous ne balancez pas la batte. Afin de trouver le bon équilibre, vous devez expérimenter et cela signifie que vous pouvez parfois le faire parfois. Vous ne devriez pas avoir peur d'essayer de nouvelles choses et de refacteur lorsque vous pensez qu'un autre design fonctionnera mieux. La seule chose que vous devriez avoir peur de ne pas apprendre et d'aller mieux.


0 commentaires

2
votes

Utilisez ces articles et livres comme guide. Plus vous en savez, plus vous aurez à votre disposition pour prendre la bonne décision sur ce qu'il faut utiliser et quand. Les modèles de conception ne sont pas destinés à être utilisés dans la mesure du possible et ne refacttore que quelque chose que vous venez de faire parce que.

Vous devez refactoriser le code lorsque vous devez. Par exemple, comme vous ajoutez une fonctionnalité ou une correction d'un bug et de la notification, vous pouvez le rendre meilleur.

Vous devez utiliser un motif de la même manière. Les motifs peuvent rendre votre code pire lorsqu'il est utilisé de mauvais / mal et d'obscurcir le code lorsqu'un moyen non moderne plus simple satisferait la solution. Il n'est pas nécessaire de faire du modèle heureux dans le code et quand cela se produit, le code est le pire pour cela.

Stick avec le Yagni (vous n'allez pas en avoir besoin) . Cela ne veut pas dire que vous ne pensez jamais de votre conception. Au contraire, c'est l'idée que nous avons souvent mentionné que vous avez mentionné peut-être sur Ingénieur notre solution au lieu de le laisser se développer au fil du temps, selon les besoins.

"La théorie est bonne. La théorie nous rappelle que les gens ont traité ces questions avant. Mais est-ce la loi? Nous devons à nous-mêmes de penser et comprendre pour nous-mêmes. " - ROB CONERY


0 commentaires

2
votes

Je pense qu'une partie du problème est exemples dans les livres.

Lorsque vous écrivez un livre ou un article, vous avez besoin d'exemples pour présenter votre idée. Habituellement, les exemples sont censés être simples. Cependant, pour un exemple simple, le "modèle" peut ne pas faire trop de sens.

Ensuite, certaines personnes commencent à appliquer les machines compliquées à toutes sortes de problèmes simples, juste pour coller un motif quelque part. Je pense que c'est la mauvaise utilisation des modèles que vous décrivez.

Cependant, pour des conceptions plus compliquées (bien, cela nécessite des modèles très bon jugement), peut être utile. Vous voudrez peut-être aussi lire Quand les modèles de conception sont-ils le problème au lieu de la solution?


0 commentaires

0
votes

La majorité du temps que j'ai trouvé que le code qui fonctionne bien suit déjà les modèles appropriés. Il y a deux modèles que j'ai vu qui ont des choses compliquées - singleton et décorateur. IMHO A SINGLETON n'est qu'une version plus verbeuse d'une classe de méthodes statiques. Le motif de décorateur n'est pas extrêmement important que chaque décorateur de ré-implémente une charge de plaque de chaudière enfreignant le sec, ainsi que de connaître la décoration violant SRP. Dans l'ensemble, les modèles sont surtout de bons outils, mais simplement parce qu'un concept a le titre d'un "modèle" ne signifie pas que c'est bon.


0 commentaires