URL: https://linuxfr.org/users/foobarbazz/journaux/software-architecture-considered-harmful Title: Software architecture considered harmful Authors: foobarbazz Date: 2022年06月08日T21:30:03+02:00 License: CC By-SA Tags: Score: 27 Bonjour tout le monde, Trop souvent je me retrouve à devoir travailler sur des projets dont la complexité globale est supérieure à ce que serait celle d'un bête fichier avec les fonctions versionnée avec un numéro dans le nom (j'exagère à peine). Concrètement, c'est assez typique je pense : pour un projet, 4 dépôts git avec pour chacun 6 branches quasi vides, une arborescence /lib /app /include /doc /ressource, des submodules dans tous les sens, tous les fichiers README, TODO, INSTALL, une péta chiée de tests (avec une dépendance à la con pour la compilation), tout ça pour une charge utile de 600 lignes de code. Ajouter de la structure, c'est bien, mais ça reste ajouter quelque chose, ça augmente la complexité. **Si cette complexité ajoutée n'apporte pas un énorme plus il ne faut pas la mettre**. J'ai le sentiment qu'au cours de leur formation des programmeurs commencent par tout mettre dans un seul fichier, puis apprennent à faire des fonctions, des modules, des packages, etc. mais qu'au final pour un code utile donné la complexité reste constante, elle ne fait que s'éloigner du code proprement dit. Pire ! Quand tout le code est dans un seul fichier en vrac, au moins, il tient dans un buffer d'éditeur de texte, pas besoin de regarder dans 4 dépôts, 36 répertoires et 170 fichiers. J'ai l'impression que des dev passent plus de temps à jouer avec les outils qu'à coder, je préfère 1000 fois un programme en vrac dans un seul fichier qu'une coquille vide qui fait trois trucs avec une archi qui n'est pas nécessaire en dessous de 100 000 lignes de code. Il y a un culte du cargo là dedans, reproduire à échelle microscopique des techniques qui sont nécessaire quand on bosse sur un projet énorme, dans l'espoir que... ça rende le projet énorme ? Je sais pas trop ce qui est espéré là dedans. Bien sûr, il faut un peu penser et garder une visibilité sur la suite, mais certainement pas anticiper. Le besoin de structure dans un code vient des "feuilles", certainement pas de la "base". https://fr.wikipedia.org/wiki/YAGNI https://fr.wikipedia.org/wiki/Principe_KISS