2009-06-05 6 views

Répondre

36
  • Facile à comprendre.
  • Facile à modifier.
  • Facile à tester.
  • Fonctionne correctement (suggestion de Kent Beck - très à droite).

Ce sont les choses qui sont importantes pour moi.

+7

Il devrait également fonctionner correctement. Sinon, cela me semble être une bonne définition. –

+1

Bon point, je l'ai ajouté à la réponse. – Ree

1

Le code dans lequel les différents modules ou classes ont des contrats clairement définis est un bon début.

17

Code Je n'ai pas peur de modifier.

1

Code qui ne se casse pas à plusieurs endroits lorsque vous apportez un seul changement apparemment insignifiant. Il est également facile de suivre le chemin de contrôle du programme.

10

Code ne nécessitant aucun commentaire pour être facilement compris.

+0

Je dirais une utilisation minimale des commentaires, plutôt que rien du tout: (1) il n'est pas impossible d'avoir un algorithme contre-intuitif; un commentaire peut être utilisé pour rendre l'utilisateur conscient (2) des commentaires peuvent être utilisés pour décomposer le code en sections logiques afin que le lecteur ait immédiatement une vue d'ensemble. –

+0

Merci pour ce commentaire. Quant à décomposer votre code en sections logiques avec des commentaires, je ne suis pas du tout d'accord. Si vous ressentez le besoin de casser votre code, utilisez des méthodes avec des noms corrects. En ce qui concerne les algorithmes contre-intuitifs, si vous faites ce qui précède, je doute que vous ayez besoin de commentaires pour décrire ce qui se passe. Si vous en avez encore besoin, documenter votre solution est probablement plus utile que d'ajouter quelques commentaires à votre code. –

1

Code Haskell sans point. (Pas vraiment, cependant.)

2

Code qui se lit aussi proche d'un langage humain que possible. Je veux dire à tous les niveaux: de la syntaxe utilisée, la convention de nommage et l'alignement jusqu'aux algorithmes utilisés, la qualité des commentaires et la complexité de la distribution du code entre les modules.

Simplest exemple convention de nommage:

if (filename.contains("blah")) 

contre

if (S_OK == strFN.find(0, "blah")) 

partie de celui-ci dépend de l'environnement/API utilisées, mais la majeure partie est bien sûr la responsabilité du développeur

1

Le code réutilisable est également important. Donc, non seulement la qualité du code est importante, mais où mettez-vous. Exemple, la logique métier dans un contrôleur est un code inutile

Questions connexes