Les pratiques de «code propre» sont-elles vraiment aussi propres et utiles? [fermé]

11

Je fais actuellement un stage dans une grande entreprise et ils subissent de nombreux changements dans la structure de livraison de logiciels (passage à Agile).

Au cours des deux derniers mois, j'ai remarqué cet attachement religieux aux Clean Codepratiques et au livre comme une bible pour les développeurs.

Maintenant, l'une des caractéristiques les plus importantes du code propre est un code auto-explicatif qui est basé sur une dénomination compréhensible et une refactorisation rigoureuse. Ceci est suivi d'une no commentingrègle.

Je comprends que ce code propre est un investissement à long terme qui facilitera la maintenance et l'amélioration du code, mais ... cela vaut-il vraiment la peine?

Quelqu'un pourrait-il partager son expérience sur Clean Code et toute opinion si je suis tout simplement trop conservateur ou si c'est juste une tendance temporaire?

Arturs Vancans
la source
1
De nombreuses bonnes questions génèrent un certain degré d'opinion basé sur l'expérience d'un expert, mais les réponses à cette question auront tendance à être presque entièrement basées sur des opinions plutôt que sur des faits, des références ou une expertise spécifique.
moucher
4
Je n'ai pas une très haute opinion de ce livre (malgré son auteur). En général, il vaut mieux ne pas être trop dogmatique. La plupart des recommandations de programmation sont parce qu'elles se sont avérées efficaces dans la pratique, mais elles ne sont pas la vérité absolue, alors ne vous inquiétez pas trop. Continuez à lire et continuez avec ce que vous pensez être plus correct, mais ne réinventez pas la roue non plus. Il y a de fortes chances que quelqu'un de plus intelligent que nous ait déjà trouvé de meilleures solutions que la nôtre.
DPM
2
Une méthode avec un nom de 70 caractères fait probablement plus d'une chose. Violation SRP ai-je raison?!
Tombatron
1
Voici une autre pensée, dans 5 ou 10 ans, lorsque vous êtes développeur dans une entreprise qui se soucie moins du code propre, vous apprécierez vraiment cet exercice dogmatique.
Tombatron
3
Ayant travaillé (brièvement) sous "aucun commentaire", je préfère de beaucoup que ce soit une ligne directrice forte plutôt qu'une règle. Il y a des moments où des commentaires sont nécessaires - généralement dans une logique métier obscure. Une méthode appelée CalculateFoonicityMetric()vous dit exactement ce qu'elle fait, et un code bien écrit vous montrera comment ... mais ni l'un ni l'autre ne vous explique pourquoi . Le code peut être évident en quoi (multiplier cela par cela, diviser par l'autre chose, le mettre au carré, l'ajouter sur ce bit ...) mais pas clair pourquoi (facteur = a * b / c; carré pour tenir compte du foo négatif, ajuster pour dérive ...). J'apprécie un commentaire rapide qui explique pourquoi.
anaximander

Réponses:

17

Je comprends que ce code propre est un investissement à long terme qui facilitera la maintenance et l'amélioration du code, mais ... cela vaut-il vraiment la peine?

Absolument.

La refactorisation est très importante, mais passer 75% de votre temps à déplacer les méthodes et passer beaucoup de temps à décider de son titre ne semble pas être si productif.

Bien sûr, mais considérez que la grande entreprise a probablement des années ou des décennies de mauvais code à nettoyer. Cela va prendre beaucoup de temps et d'efforts pour le faire.

La principale chose à réaliser est que vous avez tous les deux raison. le «code propre» est très important, et le code propre est un moyen universellement respecté d'y arriver. Étant donné que l'entreprise vient de commencer le long du chemin, ils seront plus redevables au livre qu'un groupe qui a plus d'expérience. Une fois qu'ils l'ont fait pendant un court instant, ils commenceront à apprendre ce qui fonctionne et ce qui ne fonctionne pas. Une fois qu'ils auront mieux compris cela, ils suivront (espérons-le) une approche plus pragmatique et naturelle qui maintient un code propre, mais ne conduit pas à 70 noms de fonctions de caractère.

Telastyn
la source
4

J'écrivais à l'origine un commentaire. Je vais essayer de donner moins de réponses que de perspectives à considérer. Cependant, j'approuve absolument les pratiques de «code propre» comme le nommage et la refactorisation compréhensibles.

J'ai toujours détesté les règles sans commentaires , car il y a des cas où des commentaires sont nécessaires pour éviter une future rupture de code. Ils devraient normalement être limités à ce qui est fait et pourquoi. Utilisez-les avec parcimonie lorsque le code fait quelque chose d'inattendu ou qu'un algorithme doit être remplacé.

Tenez compte de la productivité lorsque vous lisez ou gérez du code. Dans la durée de vie du code, cela peut être plus important que la productivité lors de l'écriture du code. Ces pratiques aideront-elles la productivité dans ces tâches?

Avec l'expérience, ces pratiques devraient devenir ancrées et devenir moins destructrices de productivité. Le choix du bon nom peut prendre plus de temps car vous clarifiez ce que le code doit faire. (Cette clarification peut accélérer le codage et le débogage.) Cela entraîne-t-il un code qui ne fait que ce qui est requis ou qui a moins de bogues? Quel effet cela a-t-il sur la productivité?

Le temps pris pour choisir le bon nom de méthode sera probablement payant immédiatement pour mieux comprendre quel est le but de la méthode. Comparez les noms de méthode "iterateOverCustomers" à "LocateActiveCustomers". Lequel exprime l'intention de la fonction? Laquelle sera plus facile à refactoriser si nécessaire?

BillThor
la source
3
Je voudrais souligner que la règle "pas de commentaire" que les gens aiment attribuer au livre Clean Code n'est en fait nulle part dans le livre. Au contraire, il y a un chapitre entier sur les commentaires, dont la première moitié est consacrée à la description de nombreux types de "bons commentaires", suivie de la section sur les "mauvais commentaires". Les opinions de l'auteur sur la question sont en réalité beaucoup plus raisonnables que ce que beaucoup lui attribuent.
Eric King
Je commentais les règles "pas de commentaire" en général. J'ai travaillé dans des langues où il a été proposé de supprimer des commentaires de la définition de la langue. Pas de commentaires bons ou mauvais. À l'époque, nous avions un commentaire dans un bloc de code où il était souhaitable de passer au travers dans certains cas. Il y avait un commentaire avertissant que tel était le cas et de ne pas ajouter de nouveaux blocs de code à ce stade.
BillThor
Ouais, cela me semble assez extrême.
Eric King