Votre perspective peut être faussée par votre expérience personnelle. Il s’agit d’une pente glissante de faits individuellement corrects, mais la déduction qui en résulte ne l’est pas, même si elle semble correcte au premier abord.
- Les cadres ont une portée plus grande que les petits projets.
- Les mauvaises pratiques sont beaucoup plus difficiles à gérer dans les bases de code plus grandes.
- Construire un framework (en moyenne) nécessite un développeur plus habile que de construire un petit projet.
- Les meilleurs développeurs suivent davantage les bonnes pratiques (SOLID).
- En conséquence, les cadres ont davantage besoin de bonnes pratiques et ont tendance à être construits par des développeurs plus expérimentés.
Cela signifie que lorsque vous interagissez avec des frameworks et des bibliothèques plus petites, le code de bonne pratique avec lequel vous interagissez se trouve plus souvent dans les frameworks plus grands.
Cette erreur est très courante, par exemple chaque médecin chez qui j'ai été traité était arrogant. Par conséquent, je conclus que tous les médecins sont arrogants. Ces sophismes souffrent toujours de faire une inférence générale basée sur des expériences personnelles.
Dans votre cas, il est possible que vous ayez principalement expérimenté les bonnes pratiques dans des cadres plus grands et non dans des bibliothèques plus petites. Votre observation personnelle n’est pas fausse, mais il s’agit d’une preuve anecdotique et non universellement applicable.
2 modes de programmation - créer plus ou moins exactement ce qui est demandé via les exigences et KISS (programmation typique), ou créer une logique, des services, etc. très génériques et réutilisables offrant la flexibilité dont d'autres développeurs peuvent avoir besoin (programmation cadre)
Vous confirmez un peu cela ici. Pensez à ce qu'est un cadre. Ce n'est pas une application. C'est un "modèle" généralisé que d'autres peuvent utiliser pour faire toutes sortes d'applications. Logiquement, cela signifie qu'un cadre est construit dans une logique beaucoup plus abstraite pour pouvoir être utilisé par tout le monde.
Les constructeurs de framework sont incapables de prendre des raccourcis, car ils ne savent même pas quelles sont les exigences des applications suivantes. Construire un framework les incite naturellement à rendre leur code utilisable par d'autres.
Les concepteurs d'applications ont toutefois la possibilité de compromettre l'efficacité logique, car ils se concentrent sur la fourniture d'un produit. Leur principal objectif n'est pas le fonctionnement du code, mais plutôt l'expérience de l'utilisateur.
Pour un framework, l'utilisateur final est un autre développeur, qui interagira avec votre code. La qualité de votre code est importante pour l'utilisateur final.
Pour une application, l'utilisateur final est un non-développeur, qui n'interagira pas avec votre code. La qualité de votre code n’a aucune importance pour eux.
C'est précisément pourquoi les architectes d'une équipe de développement agissent souvent en tant que responsables de l'application des bonnes pratiques. La livraison du produit leur est très facile, ce qui signifie qu'ils ont tendance à regarder le code de manière objective, plutôt que de se concentrer sur la livraison de l'application elle-même.
Si vous ajoutez ces points d’abstraction d’entrée, répondez-vous réellement aux besoins des utilisateurs ou créez-vous un cadre au-dessus de votre cadre existant et de votre pile technologique pour faciliter les ajouts futurs? Dans quel cas servez-vous les intérêts du client ou du développeur?
C’est un point intéressant, et c’est (selon mon expérience) la principale raison pour laquelle les gens essaient encore de justifier d’éviter les bonnes pratiques.
Pour résumer les points ci-dessous: Ignorer les bonnes pratiques ne peut être justifié que si vos exigences (telles que connues à ce jour) sont immuables et qu’il n’y aura jamais de modification / ajout à la base de code. Alerte spoiler: C'est rarement le cas.
Par exemple, lorsque j'écris une application console 5 minutes pour traiter un fichier particulier, je n'utilise pas les bonnes pratiques. Parce que je vais seulement utiliser l'application aujourd'hui, et qu'elle n'aura pas besoin d'être mise à jour à l'avenir (il serait plus facile d'écrire une application différente si j'en avais besoin une de plus).
Supposons que vous puissiez compiler correctement une application en 4 semaines et que vous puissiez le créer correctement en 6 semaines. À première vue, la construction bâclée semble meilleure. Le client reçoit leur application plus rapidement et l'entreprise doit consacrer moins de temps aux salaires des développeurs. Gagner / Gagner, non?
Cependant, cette décision est prise sans réflexion. En raison de la qualité de la base de code, il faut compter 2 semaines pour apporter des modifications majeures à celui qui a été construit de façon médiocre, tandis qu’il faut une semaine pour les mêmes modifications. Beaucoup de ces changements pourraient se produire à l’avenir.
En outre, les modifications ont tendance à nécessiter de manière inattendue plus de travail que prévu au départ dans des bases de code mal construites, ce qui a pour effet de forcer votre temps de développement à trois semaines au lieu de deux.
Et puis, il y a aussi la tendance à perdre du temps à chasser les insectes. C'est souvent le cas dans les projets où la journalisation a été ignorée en raison de contraintes de temps ou de réticence totale à la mettre en œuvre car vous travaillez de manière distraite en supposant que le produit final fonctionnera comme prévu.
Cela n'a même pas besoin d'être une mise à jour majeure. Chez mon employeur actuel, j'ai vu plusieurs projets construits rapidement et mal, et lorsque le plus petit bogue / changement devait être corrigé en raison d'une mauvaise communication dans les exigences, cela a entraîné une réaction en chaîne du besoin de refactoriser module après module. . Certains de ces projets ont fini par s'effondrer (et laisser derrière eux un gâchis incommenable) avant même de publier leur première version.
Les décisions de raccourci (programmation rapide et imprécise) ne sont utiles que si vous pouvez garantir de manière concluante que les exigences sont exactement correctes et qu’elles n’auront jamais besoin de changer. D'après mon expérience, je n'ai jamais rencontré de projet où c'est vrai.
Investir plus de temps dans les bonnes pratiques, c'est investir dans l'avenir. Les bugs et modifications futurs seront tellement plus faciles lorsque la base de code existante est construite sur de bonnes pratiques. Il versera déjà des dividendes après seulement deux ou trois modifications.