En parlant avec un ami non programmeur, il m'est arrivé de mentionner le concept de "beau code" et elle voulait comprendre ce que cela signifiait, mais je ne savais pas trop comment l'expliquer à quelqu'un qui n'aurait aucun problème. contexte que ce soit.
Quand tout le code ressemble à du charabia à quelqu'un de toute façon, comment pouvez-vous expliquer ce qui rend un morceau de code plus joli qu'un autre? Les analogies pourraient aussi être utiles.
aesthetics
Daniel Vandersluis
la source
la source
Réponses:
Analogie linguistique
Pensez à votre histoire préférée. C'est probablement bien écrit. Pour un non-anglophone, le simple fait de ne pas comprendre ou comprendre pourquoi il est beau n'enlève rien à sa beauté.
Analogie de construction
Considérez une maison mal bâtie. Il a des portes et des fenêtres qui sont évidemment briques. Le mortier est fissuré dans un coin où la fondation était insuffisante. Et personne ne peut comprendre pourquoi une cage d'escalier menant au 2e étage n'existe pas. Les toilettes sont construites à côté de la cuisine sans ventilateur d'extraction et situées de manière à ce que les vents dominants dissipent les mauvaises odeurs de tourbière dans le reste de la maison. La cheminée de la cheminée à foyer ouvert se trouve à 5 cm du bois, prête à prendre feu.
Cela contraste avec une maison où tout est là où elle devrait être, elle demande peu d'entretien, est parfaitement isolée pour qu'un peu de chaleur solaire la maintienne au chaud en hiver, l'énergie est récupérée grâce à la ventilation, pour que vous ayez à la fois de l'air frais et une température confortable et des factures d'électricité négligeables. Il est construit avec des matériaux ininflammables afin qu'il ne puisse pas brûler après un incendie. Il résistera à un séisme de 9,0 et à une tornade de niveau 5. La construction ne coûte que 30% de plus que celle de l'autre maison, mais la différence sera remboursée dans 5 ans. Et c'est esthétiquement agréable.
L'interface graphique est comme l'apparence extérieure d'une maison. Un utilisateur peut reconnaître la beauté dans une interface graphique, tout comme il peut apprécier une belle maison. Mais peut-être plus important encore, la vraie beauté dans la conception des maisons et des programmes réside dans les choses invisibles pour les non-initiés, mais importantes ou agréables à avoir malgré tout.
la source
Pensez à une voiture.
La plupart d'entre nous regardons la voiture et ne peuvent voir que le corps. Si quelqu'un répare quelques bosses et applique un nouveau travail de peinture sur la voiture, cela aura l'air beaucoup plus beau. C'est fondamentalement la même voiture, mais c'est tout ce que nous voyons.
Un mécanicien ouvre la voiture et regarde le moteur. Ils voient à quel point ce moteur est bon. Ils voient que tout est conçu pour être facile à obtenir, à maintenir et à travailler. Ils voient les pièces et savent à quel point il a été conçu. Pour un mécanicien expérimenté, le moteur d'une voiture de haute qualité bien entretenue devient un objet de beauté. Ils ne peuvent pas vous expliquer ce qui la rend belle, mais leur notion de beauté se traduira probablement par une réduction des coûts de maintenance, une plus longue durée de vie de la voiture et de meilleures performances. Tout cela ajoute à la valeur de cette voiture, même si vous ne la voyez pas.
Lorsque vous consultez un site Web ou une application, vous le voyez comme si la plupart d’entre nous voyions des voitures. Quand je regarde le code, je le regarde comme si le mécanicien regardait le moteur de la voiture. Vous ne pouvez jamais expérimenter la beauté de ce code comme je le fais, il est littéralement invisible pour vous. Mais cette beauté est importante, tout comme la beauté du mécanicien. Il détermine le fonctionnement du logiciel, le type de problèmes qu'il rencontre, la facilité d'amélioration du logiciel, etc. Tout cela ajoute à la valeur de ce logiciel, même si vous ne le voyez pas.
la source
Tout le code présent est requis, et aucun d’eux n’exige d’explication.
la source
Je ferais référence à la poésie:
Un poème bien écrit a un sens différent de celui d'un extrait d'un manuel mal traduit sur le même sujet.
la source
Les problèmes de codage concernent la conceptualisation, de sorte qu'un code magnifique représente une conceptualisation remarquable du problème.
Par exemple, nous aimons cela lorsqu'un problème peut être réduit à un problème déjà résolu, ce qui donne un aperçu de la nature du problème lui-même .
Parfois, une nouvelle conceptualisation du problème peut le rendre si facile; nous parlons de solutions élégantes qui nécessitent des astuces simples qui simplifient une tâche difficile.
Pour moi, le Quicksort est un bel exemple: choisissez un élément aléatoire dans un tableau, puis comparez tous les autres éléments du tableau à celui-ci; si le nombre est inférieur, placez-le dans la pile A; si le nombre est supérieur, placez-le dans la pile B. Maintenant, par l'inégalité du triangle, aucun élément de la pile A ne devra jamais être comparé à un élément de la pile B. Recurse sur A et B, et vous avez terminé. .
la source
Cela me rappelle ceci:
Source: XKCD - LISP
la source
Aucun code non trivial ne peut être parfait car un code parfait requiert à la fois la satisfaction d'objectifs souvent contradictoires. Beau code, par conséquent, équilibre parfaitement tous les attributs importants pour la tâche à accomplir et est plus proche de la satisfaction de tous en même temps que ce que la plupart des gens penseraient possible. Dans aucun ordre particulier:
la source
Les peintures de Jackson Pollock sont un exemple de quelque chose de beau pour certains et de charabia pour d'autres.
la source
Si la personne connaît bien les mathématiques, j'aime bien comparer un code magnifique à une solution élégante à un problème.
la source
Certains aspects d’un bon code sont les suivants:
la source
Pour moi les langues sont mes outils.
Et comme tout artisan, je préfère que mes outils soient en parfait état.
Plus le code est bon, plus la clarté du concept, la facilité de maintenance et la lisibilité sont bonnes. le meilleur le code.
Donc pour moi, lire du code bien écrit, c'est comme ouvrir une boîte à outils avec des outils bien conçus.
J'ai utilisé cette analogie plusieurs fois avec succès. Les personnes ayant une formation plus pratique ou artistique semblent comprendre le concept de code propre / beau de cette manière.
la source
Je pense que cela dépend de ce que vous entendez par beau code.
Pour moi, le code est beau quand il est lisible. Outre les problèmes éventuels liés aux concepts de programmation, un non-initié pourrait lire et, du moins à un haut niveau, comprendre ce que fait le code.
Comme d'autres réponses l'ont déjà expliqué, le code peut aussi être beau dans le sens où il réalise des fonctionnalités complexes en combinant quelques concepts simples. Je ne sais pas quelle sorte d'analogie serait préférable pour expliquer cela à un non-programmeur, cela dépend du profane. Des jouets de puzzle me viennent à l’esprit, comme le NeoCube .
la source
À mon humble et personnel opinion, beau code est comme un bon livre de roman:
la source
C'est comme une moyenne entreprise maigre où tout le monde connaît son rôle, il est facile de savoir qui est bon dans quoi et il n'y a pas de duplication d'effort
Contre.
Espace bureautique où la médiocrité est défendue, trois responsables n'ont rien de mieux à faire que de vous déranger au sujet des rapports TPS, le! @ # $ Ing FAX MACHINE NE FONCTIONNE JAMAIS !!! et un employé donné ne peut obtenir que 15 minutes environ de travail réel par semaine. Il se peut qu'un employé ne travaille même plus techniquement là-bas, parce que quelqu'un a oublié de le licencier (c'est difficile à dire, car personne ne travaille efficacement et il est difficile d'évaluer ce qu'il essaie d'accomplir). Et obtenir quelque chose de concret nécessite de naviguer dans un système absurdement trop compliqué que quelqu'un lirait et penserait bien paraître sur son curriculum vitae, même si cela ne résout pas réellement le problème qu'il avait.
la source
Il n'y a pas de "beau code", il existe des "algorithmes élégants" et des "conceptions élégantes". La conception peut être comprise par les non-programmeurs.
Je déteste les programmeurs qui discutent du "beau code", car d’une manière ou d’une autre, ils ne savent pas vraiment comment un interprète ou un compilateur va le digérer et ce que la machine va faire. C’est plus comme un enfant qui montre à sa mère comment son histoire est merveilleuse, mais vraiment, ce n’est pas le cas.
la source
Est-ce que vous expliquez aux gens pourquoi une belle image est belle? Non, vous leur montrez l'image (car, vous savez, une image en dit plus que 1000 mots). Le mieux est donc de leur montrer un petit morceau de code vraiment élégant, beau, parfait (et peut-être à titre de comparaison, comment Joe Average l'aurait codé).
la source