Commentaires
- duplication possible de Rédaction / discussions sur lesthétique du code?
- Ce ' nest quune figure de style. La beauté réside dans les yeux du spectateur, et au-delà de cela, tout est ' que la clarté des instructions que vous ' avez posées dans un fichier texte pour résoudre un problème, et avec quelle facilité vous ou nimporte qui dautre pouvez le modifier et le maintenir à lavenir. Au-delà de cela, la beauté de votre code dépend entièrement de vous – indentations, structure modulaire, complexité, efficacité simultanément avec une lisibilité facile, conventions de nommage, etc.
- Vous pourriez être intéressé par la lecture de Beau code: les principaux programmeurs expliquent comment ils pensent alors!
- duplication possible de Comment pouvez-vous expliquer " beau code " à un non-programmeur?
Réponse
« La beauté sachète au jugement de lœil ».
Cela dit, je pense que la plupart des programmeurs conviendront que le beau code démontre un équilibre entre clarté et transparence, élégance, efficacité et esthétique.
-
Clarté et transparence : La clarté est la facilité avec laquelle un lecteur peut déduire ce que fait le code. Le code transparent fait ce quil semble faire. Si le code semble faire une chose mais fait autre chose (ou quelque chose de plus), ce nest pas transparent – cest trompeur.
-
Élégance : il existe de nombreuses façons dimplémenter la plupart des algorithmes, mais certaines manières sont maladroites tandis que dautres sont soignées et gracieuses. La succincte ajoute souvent de lélégance, mais une concision excessive peut réduire la clarté.
-
Efficacité : éviter lutilisation inutile de ressources (comme le temps CPU, la mémoire et les E / S).
-
Esthétique : être doux pour les yeux. Cest assez subjectif. Cest surtout une question de style. Une considération importante est davoir un style cohérent . Le code qui change, par exemple, mettre le style en retrait à mi-chemin, est moche.
Commentaires
- une belle explication, +1
- Je retirerais " Efficacité ". Bien que, au sens strict, il soit positif, linclure dans la liste peut au mieux être trompeur. Cest normalement un sous-produit des autres et cela devrait être une préoccupation secondaire au moment du codage. La raison principale est que, pour la plupart, cela ne se manifeste quaprès que le compilateur a travaillé sa magie noire.
- @Jubbat En effet – parfois la solution la plus efficace conduit en fait à un code très laid. (Par exemple, la fonction classique Fast Inverse Square Root)
- @DarrelHoffman Bien, bien que ce compromis soit également vrai par plus de variables qui définissent un bon code, pas seulement lefficacité et le reste (il y a une bonne longue explication à ce sujet dans " Code complet " – malheureusement, je ne ' pas me souvenir dans quelle section du livre, probablement près du début-)
- @Jubbat: Je suis daccord que lefficacité est généralement une préoccupation secondaire, mais je pense toujours quelle est prise en compte dans léquation de beauté.
Réponse
Ne laissez pas les gens vous tromper en pensant que le beau code est le suivant:
- algorithmes intelligents
- fonctionnalités de langage sournoises
- résoudre un problème avec le moins de touches
Parce que ce nest pas le cas. Un code comme celui-là est mignon , et il vaut certainement le coup d’œil, mais ce n’est pas le genre de code avec lequel vous voulez vous installer.
Et vous savez ce polymorphisme statique récursif de type méta qui hérite des lambdas variatiques – ou quoi que vous ayez lu en ligne? Vous pourriez être impatient de sauter sur des astuces innovantes et astucieuses sans raison claire de les utiliser. Mais le code qui repousse les limites dun langage nest pas non plus beau.
Ils « sont sexy .
Des tonnes de plaisir, mais posez-vous la question suivante: est-ce que je veux vraiment passer du temps à explorer lanatomie de cette langue, ou est-ce que je veux travailler avec une langue et construire quelque chose de beau? Après tout, un langage de programmation nest que loutil à créer.
Alors, quel est le code beau alors?
Beau code = code maintenable. CELA « CEST!
CEST LA FORMULE !
Si vous pouvez écrire quelque chose, revenez-y quelques mois plus tard et continuez à progresser, alors cest magnifique. Si un an plus tard, vous réalisez que vous souhaitez également ajouter des fonctionnalités comme peaufiner une fonctionnalité existante, et vous parvenez à le faire avec une relative facilité, alors CELA est beau. Si dautres personnes peuvent entrer dans votre base de code et comprendre rapidement ce qui se passe parce que les choses sont organisées, elles auront plus de cheveux et seront aussi belles.
La vraie question que vous voulez poser est : « Comment écrire du code plus maintenable? ». Jai peur que ce soit une question plus importante et que ce soit une discipline assez créative. Continuez simplement à écrire du code, mais cette fois, ne vous demandez pas si cela peut être plus beau. Demandez-vous si vous pouvez le rendre plus maintenable.
Commentaires
- pour lutter contre les problèmes que vous soulevez, il y a aussi le conseil à c2.com/cgi/wiki?KillYourDarlings
Réponse
Je pense que « Beautiful Code » nest pas un terme objectif ou particulièrement utile. Et nous ne devrions pas essayer de le définir.
Les définitions typiques du dictionnaire du mot anglais « beauty » vont comme ceci:
- « 1. la combinaison de tous les qualités dune personne ou dune chose qui ravissent les sens et plaisent à lesprit «
- » 1. la qualité présente dans une personne ou une chose qui procure un plaisir esthétique intense ou une profonde satisfaction à lesprit ou aux sens. »
- « 1. La qualité qui donne du plaisir à lesprit ou aux sens et qui est associée à des propriétés telles que lharmonie de la forme ou de la couleur, lexcellence artistique, la véracité et loriginalité. »
(Source http://dictionary.com )
Le fil conducteur est que « beauté » concerne ce qui est esthétique. Cest forcément subjectif … comme lillustre le dicton « La beauté est dans loeil du spectateur ».
Nous pouvons appliquer le mot « beauté » au code , et la signification évidente est que le code est « esthétique ».
Mais dire ensuite que « beau code » a un certain ensemble dattributs (comme suggéré par dautres réponses) est une contradiction du sens évident de esthétique. Lesthétique concerne la façon dont les gens … les individus … perçoivent les choses.
Ou pour mettre autrement, il y a quelque chose de répugnant à ce que quelquun me dise ce que je devrais penser être beau, que ce soit dans des personnes, des œuvres dart ou … du code.
En ce qui concerne en ce qui me concerne, le beau code est un code que je trouve beau, et cest tout. Cest subjectif et individuel, et laissez-nous en rester là.
Réponse
Voici mon conseil.
Regardez les réponses à Comment pouvez-vous expliquer " beau code " à un non-programmeur? et voyez sur quelles caractéristiques il souhaite se concentrer. Ensuite, prenez un livre comme Code Complete et lisez-le pour obtenir des conseils sur la façon décrire un meilleur code.
À un moment donné, il vous touchera en regardant votre ancien code , « Cest moche. » Ce sera une réaction esthétique directe. Et en le regardant, vous vous rendrez compte que vous « voyez » votre code comme un programmeur, et que vous pouvez voir la laideur parce que vous savez à quoi devrait ressembler un meilleur code.
Réponse
Ce nest pas parce que vous lisez souvent du beau code que les gens qui écrivent à ce sujet ont la même définition. Malheureusement, à en juger par votre question, il ne semble même pas quils se soient souciés de définissez-le en premier lieu.
Pour moi, un beau code est:
- Expressif
- Concis
Un code concis qui nest pas expressif peut être cryptique, et un code expressif qui nest pas concis a tendance à être gonflé et fastidieux à lire, vous avez donc besoin des deux.
Je ninclurais pas la maintenabilité dans le cadre de ce qui fait du code belle, parce que la beauté est quelque chose que vous voyez / lisez, pas quelque chose sur quoi vous agissez. Mais là encore, cest mon opinion personnelle.
Réponse
Le terme beau code est un terme très vague et abstrait. Il est facile de comprendre ce quil représente et ce que cela signifie, mais cela ne doit jamais être considéré comme un objectif secondaire.
Cela me rappelle beaucoup la métrique de couverture du code. Lorsque vous obtenez le nombre suffisamment élevé, vous pouvez vous détendre et passer à autre chose. Avoir une base de code avec une couverture denviron 80% est génial, pas à lépreuve des balles, mais suffisant pour se détendre et faire dautres choses. Avoir une couverture de 40% est assez effrayant et devrait vous encourager à augmenter ce nombre.
Le point est simplement que la couverture du code nest vraiment significative que si le nombre est faible. Alors ne le laissez pas être bas. Lorsque la couverture augmente à un certain point, passez à autre chose.
De même, un beau code est génial. Si vous avez un joli code, super, passez à autre chose. Ne vous en faites pas trop. Vous natteindrez jamais la barre des 100%, et si vous le faites, vous vous apercevrez que vous vous êtes trop concentré sur ce à quoi il se lit, ou à quoi il ressemble, et pas assez sur ce quil fait, ou comment il le fait. Arrêtez-vous donc à une marque raisonnable puis arrêtez.
Mais si votre code est fugace, si cest un énorme désordre alambiqué de code spaghetti, si cela vous fait mal physiquement douvrir le fichier, si vous navez pas de commentaires ou documentation etc etc etc puis corrigez-le. Et faites-le dès que possible.
Au fil du temps, votre base de code finit par être généralement plus propre, généralement plus claire et généralement plus belle et surtout plus utilisable lorsque vous vous concentrez sur le rendre moins difficile. Ecrire un beau code est pas un processus en une seule étape.
Il ny a pas de philosophie magique. Ses 1000 étapes plus petites sont toutes faites ensemble, qui servent toutes un objectif concret qui na rien à voir avec la beauté du code. Mais, quand vous les servir tous ensemble, ils forment un beau code comme la somme de ses parties. Comme Voltron. Ou Captain Planet.
Réponse
Je suis vraiment daccord avec les réponses ici, mais en adoptant une approche moins technique, je dirais que le beau code est une expression de la clarté de pensée de ses auteurs sur le problème en question qui se manifeste à travers un langage bien formulé et précis mais simple.
Pour moi, regarder à travers un beau code est un peu comme regarder une œuvre dart, voir toujours de nouveaux détails qui montrent le créateur lintention, mais aussi comment les différentes parties ont été réalisées, chacune donnant une réponse à tant de questions, et puis, enfin, comment son existence se sent comme une loi naturelle à laquelle tout saligne de telle sorte quelle ne peut être décrite quavec des mots de crainte: magnifique , inspirant, beau.
Donc, de ce point de vue, dans votre carrière de programmeur, vous pourriez faire des découvertes de code magnifique que dautres pourraient ne pas comprendre parce quils manquent de connaissances ou pourraient ne plus être remarquables car ils ont été gâtés par trop de beauté;)
Le beau code a toutes les qualités pragmatiques mentionnées autrement, je suis totalement daccord.
Réponse
Jai trois critères:
- Simple: Au moins, il doit être lisible par lhomme. Par exemple, vous pouvez écrire un code qui fonctionne à O (1) pour une solution avec des tonnes de lignes, mais je préfère le code qui fonctionne avec 0 (n) résout avec quelques lignes. Cela peut changer pour des situations extrêmes, mais pour le début, la simplicité est importante.
- Réutilisable: Le code doit être réutilisable, mais pas écrasé. Si vous avez besoin dune opération, vous devez la définir de la manière dont vous pourrez lutiliser des années plus tard.
- Indentation: Ce nest peut-être pas un problème pour vous, mais pour le niveau débutant, cest la première chose à résoudre.