10
votes

code sentimental

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.

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?


1 commentaires

Après vos premières millions de lignes, vous arrêtez d'être particulièrement attaché à des personnes spécifiques. :-)


11 Réponses :


34
votes

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.

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 .

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 total de travail que le projet aurait besoin, serait de minimiser la quantité de travail que nous n'avait pas encore fait .

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.


7 commentaires

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.



6
votes

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.

Deux devis viennent à l'esprit:

"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. "

- Brian Kernighan

et

"Faites tout aussi simple que possible, mais pas plus simple. "

- Albert Einstein


6 commentaires

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 ? :-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 . Ce n'est pas parce que vous avez un impact énorme (nécessairement) indiquer que vous êtes intelligent.



2
votes

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.


0 commentaires

8
votes

Je posterai un fragment du blog de Jeff Atwood, Sucer moins chaque année et je suis d'accord à 100%.

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.


0 commentaires

14
votes

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.

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.


5 commentaires

+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 . 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.



2
votes

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.

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,

  • tests unitaires : celles-ci me tiennent plus concentrée sur ce que le code est censé faire, par opposition à toute "beauté" abstraite.

  • Code partagé Propriété : 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.

  • Paire Programmation : Travailler côte à côte avec quelqu'un vous gardera réaliste.

  • Autres commentaires : 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.


1 commentaires

+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.



0
votes

Deux mots: examen de code.

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.


0 commentaires

1
votes

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.

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.

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?


0 commentaires

1
votes

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.

Cependant, égaré ou a mal utilisé 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.

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».


0 commentaires

0
votes

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.

(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?).


0 commentaires

3
votes

Jonathan Edwards a écrit un Essai de manière impressionnante < / a> sur ce sujet, incité par le travail sur le livre O'Reilly beau code . Voici le dernier paragraphe, mais le reste de l'essai vaut également la peine d'être lu.

Une autre leçon que j'ai apprise est de méfiance beauté . Il semble que l'engouement avec une conception conduit inévitablement à chagrin, comme inciter les réalités laidées introuvantes. L'amour est aveugle, mais les ordinateurs ne sont pas. Une relation à long terme - le maintien d'un système pendant des années - enseigne une pour apprécier davantage de vertus nationales, telles que la directive et la conventionnalité. La beauté est une fantaisie idéaliste: ce qui compte vraiment, c'est la qualité de la conversation sans fin entre programmeur et code, comme chacun apprend et s'adapte à l'autre. La beauté n'est pas une base suffisante pour un mariage heureux.

Autres versions de cette même sagesse existent dans d'autres domaines. Samuel Johnson, à propos de l'écriture:

Lisez sur vos compositions et où vous rencontrez un passage que vous pensez particulièrement bien, frappez-le.

La version de William Faulkner de c'était beaucoup plus succincte: "Tuez vos chéris."

Mon beau-père travaille comme éditeur de films, et il évite de manière manifeste l'ensemble où le film est abattu. Quand il doit visiter, il protège ses yeux autant qu'il le peux. En effet, lorsqu'il décide d'inclure ou non une scène dans le film final, il ne veut pas être influencé par la quantité d'efforts qu'il a prise pour tirer sur la scène. Ce qui compte, c'est que la scène fonctionne bien dans le film final.

Mon essai, "mon évolution en tant que programmeur" (que je voudrais créer un lien avec si je n'étais pas un nouvel utilisateur), est largement quant à l'apprentissage du scepticisme sur le code que j'avais écrit: si cela fonctionne, que ce soit utile, que ce soit utile, Qu'il soit compréhensible (la programmation par paire était un réel appel de réveil ici). C'est dur!


0 commentaires