J'ai rencontré un article qui discute de la question de la "admiration du code". Fondamentalement, l'auteur parle de la manière dont les développeurs devraient être plus sceptiques quant au code qu'ils écrivent. Comment pouvons-nous «admirer» notre code, vous y fixerez-moi, nous rendons plus vulnérables aux insectes et à d'autres méshaps qui peuvent être allongés devant nous. P>
Comment pensez-vous de cette question? Et avez-vous plus de conseils sur la façon d'éviter / d'être plus conscient de ce problème? P>
11 Réponses :
Il y a quelques années, je travaillais avec un autre projet «Hobby», et j'ai réalisé que nous devions réévaluer les choses. Nous avions écrit beaucoup de code mais ce n'était pas tout bon code. P>
Nous n'avons pas vraiment envie de "jeter" tout le travail que nous avions placé. Mais j'ai réalisé quelque chose: ce qui importait le plus était la quantité de travail que nous aurions besoin de mettre en à partir de maintenant sur em >. P>
Nous n'avons pas pu changer le fait que nous avions déjà mis autant de travail dans le projet, donc le seul moyen de minimiser le montant total em> total de travail que le projet aurait besoin, serait de minimiser la quantité de travail que nous n'avait pas encore fait em>. p>
Depuis ce jour-là, j'ai cessé d'être attaché à mon code. Si je suis convaincu que la jetter et à partir de zéro signifie moins de travail que de le garder et de l'adapter à mes besoins, je vais le jeter. P>
Le concept de "Coin de couture". Éventuellement pas une idée totalement nouvelle.
Mmm. Sunkist. Attendez ... Oh, coût. Droit.
@Adrian: Non, pas une nouvelle idée, mais une nouvelle génération d'êtres humains luttent pour saisir parce qu'elle va à l'encontre du grain. +1.
+1 pour l'avatar Lemmings.
Awwww, mais c'est un wiki communautaire :(
@Adrian: Peut-être pas une idée nouvelle, mais cela a-t-il déjà eu une influence sur les décisions des gens.
J'ai trouvé des outils tels que Resharper, vous êtes très utile de vous dissocier de votre code. Lorsqu'un raccourci clavier peut refroidir un projet entier que vous commencez à comprendre que vos milliers de frappes de frappe ne sont pas toutes considérées.
Nous aimons bien admirer notre bon code, mais il n'est pas toujours facile de savoir quoi admirer. Le code compliqué et élaboré est parfois erroné pour le code admirable, tandis que l'élégance et la simplicité devraient plutôt être ce qu'il faut s'efforcer. P>
Deux devis viennent à l'esprit: p>
"Le débogage est deux fois plus dur que l'écriture le code en premier lieu. Par conséquent, si vous écrivez le code comme intelligemment aussi possible, vous êtes, par Définition, pas assez intelligent pour déboguer ça. " p>
- Brian Kernighan P> blockQuote>
et p>
"Faites tout aussi simple que possible, mais pas plus simple. " P>
- Albert Einstein P> blockQuote>
Einstein est totalement surestimé. Qu'est-ce qui l'a rendu si intelligent, à part la relativité et en laissant l'Allemagne en 1933?
@Musigenesis: Vous voulez dire ce que fait d'Einstein si intelligent, autre que révolutionner notre compréhension de l'univers physique i>? :-P
"... et qu'est-ce que les Romains nous ont donné?" (langue fermement plantée dans la joue)
Oui. Et Newton, qu'est-ce qui est si bon à lui? Tout le monde savait déjà que les choses tombent en panne. :-)
@RBRRYYYOUNG: Newton nous a appris l'importance de la promotion autonome et de la réclamation de crédit individuel pour les réalisations de groupe (pauvre Leibniz!).
@J_Random_hacker: la pénicilline était une révolution dans le traitement de la maladie et il a été découvert par accident i>. Ce n'est pas parce que vous avez un impact énorme (nécessairement) indiquer que vous êtes intelligent.
Je n'admire jamais mon code. J'admire les autres Code des peuples que je "empruntez" et j'essaie de les imiter ou de les améliorer et je constate que plus je sais, surtout de codé, plus je trouve que je ne sais pas. La seule chose de valeur Wold soit pour les programmeurs de pairs pour admirer mon code et l'emprunter. P>
Je posterai un fragment du blog de Jeff Atwood, Sucer moins chaque année et je suis d'accord à 100%. P>
J'ai souvent pensé que sucer moins Chaque année, c'est la façon dont les programmeurs humbles améliorer. Vous devriez être mécontent de code que vous avez écrit il y a un an. Si tu ne sont pas, cela signifie soit a) vous n'ont rien appris dans une année, b) Votre code ne peut pas être amélioré, ou c) vous Ne jamais revisiter l'ancien code. Tous ces sont le baiser de la mort pour le logiciel Développeurs. P> blockQuote>
Mon professeur d'art de lycée nous encourageait à prendre ce que nous considérions comme nos meilleurs dessins et les déchirer; Il a appelé cette "nettoyage de l'âme". Son raisonnement était que, en tant qu'artistes, nous avons été conduits à créer des œuvres d'art, et à tout moment, nous avons produit quelque chose que nous avons aimé et que nous nous sommes satisfait, notre motivation de continuer à créer serait réduite. P>
Alors j'ai suivi ses conseils et j'ai déchiré mes meilleures choses, et cela a fonctionné. Au lieu de passer mon temps à admirer mon ancien travail, j'ai créé de nouvelles choses et je suis continuellement amélioré. J'ai essayé de suivre le même principe avec mon code, mais cela ne fonctionne pas vraiment: mon ordinateur a une coquille plastique robuste qui est presque impossible à déchirer. P>
+1 pour le commentaire Einstein à la réponse de Guffa.
... Donc, tout ce que vous faites est uniformément pas assez bon pour rester. Alors pourquoi créer?
@Robert L: Vous ne continuez pas de déchirer votre meilleure chose pour toujours i>. Si vous avez assez bien, vous pouvez commencer à le vendre à la place, ce qui accomplit la même chose.
Ce serait bien jusqu'à ce que vous soyez fatigué de refaire la même chose encore et encore et encore (et différent à chaque fois) pour chaque nouveau client, car vous avez donné les droits de votre création sur vos clients précédents, et vous ne pouvez plus l'utiliser.
Robert L: Pour le processus, pas nécessairement le produit.
Je pense qu'il a un bon point. Il est frustrant de travailler avec des personnes qui en ont trop, car il entrave vraiment le travail d'équipe et d'arriver à la meilleure solution au problème. P>
Comme je peux être un peu délirant, j'essaie de mettre des pratiques en place qui me tiendra fondée dans la réalité. Pour le code, p>
tests unitaires strong>: celles-ci me tiennent plus concentrée sur ce que le code est censé faire, par opposition à toute "beauté" abstraite. p> li>
Code partagé Propriété Strong>: Il y a deux camps ici: donner aux gens plus de propriété de leur code et espère que la fierté prend la priorité ou leur donne moins de temps et laisser la pression des pairs entrer en jeu. Je crois que donner aux gens plus de possession peut conduire à ce code admiration. Nous pratiquons la propriété du code partagé, alors je suis constamment obligé de voir quelqu'un réécrire mon code parfait pour le rendre meilleur (dans leur esprit). J'ai vite compris que cela a trop été une perte de temps et émotionnellement difficile. P> Li>
Paire Programmation Strong>: Travailler côte à côte avec quelqu'un vous gardera réaliste. p> li>
Autres commentaires forts>: Ce sont toutes des boucles de retour d'information, mais il y en a d'autres. Il n'y a pas de meilleur moyen de voir si quelque chose fonctionne que de regarder quelqu'un (essayez de) l'utiliser. Mettez votre travail devant autant de personnes que possible. Avoir des critiques de code. Lire Code des autres personnes . Exécutez Analyse de code statique Outils. p> li>
ul>
+1, bien que je ne suis pas sûr que la propriété du code partagé fonctionnera pour tout le monde. Vous avez raison sur le compromis entre la fierté et la pression des pairs cependant.
Deux mots: examen de code. P>
Rassemblez deux ou plusieurs autres développeurs et invitez-les à examiner / critiquer / commenter votre code. 'Twill a jeté une lumière (certes sévère) sur votre code. P>
Je suis avec PurplePilot - Je n'admire pas mon propre code et, en tant que tel, je cherche constamment de nouvelles méthodes plus efficaces (enfer, plus faciles) de faire la même chose. J'aime le livre C # efficace, a ramassé beaucoup de code utile à partir de là que j'admire. P>
Je n'aurais aucune hésitation à propos de jeter du code et de recommencer, mais pas nécessairement de zéro, c'est-à-dire en écrivant du code pour un scénario spécifique, puis de la jeter, vous aurez probablement une meilleure compréhension du scénario. En d'autres termes, c'est un "problème méchant", ou vous avez trouvé une autre façon qui ne fonctionne pas à La Edison. P>
Il pose une question plus large: si le code n'est pas jeté, ni du moins revisité, se développe sur des bibliothèques qui deviennent stagnantes une bonne chose? P>
Il n'y a rien de mal à admirer votre code ... Cela fait partie du processus de renforcement positif qui vous motivera à écrire plus de codes de plus en mieux. P>
Cependant, égaré em> ou a mal utilisé em> l'admiration peut être un problème. Si le code n'est vraiment pas bon, ou a des bugs qui n'ont pas été exposés par unité ou par d'autres tests, ni ont besoin de refactoring / de redésignation / remplacement, cet admiratoïne égaré est un problème. Et utiliser l'admiration comme une excuse pour sauter une partie du processus - comme des critiques de code, ou de ne pas avoir une attitude sceptique à l'égard du code - est une mauvaise utilisation de l'admiration. P>
Comme toute autre chose qui est bonne, l'admiration du code peut être égarée ou mal utilisée - cela ne signifie pas que cela en soi est mauvais. Ce serait comme dire «la religion est une mauvaise chose, car elle provoque des conflits et des guerres entre les personnes». p>
C'est peut-être préférable d'avoir une perspective plus saine - nous ne sommes pas des scientifiques de fusées et nous ne guérissons pas le cancer - c'est juste du travail. P>
(Oui, il est raisonnable d'être fier d'un bâtiment entier que vous avez aidé à construire si vous êtes un architecte, mais ont-ils vraiment beaucoup de leur estime de soi enveloppé dans un plan de plan individuel ou d'un placard sur le sol 3 ils ont conçu par eux-mêmes?). p>
Après vos premières millions de lignes, vous arrêtez d'être particulièrement attaché à des personnes spécifiques. :-)