76 votes

Comment savez-vous que c'est un bon code?

Au cours d'un entretien téléphonique, quelqu'un a posé la question, "Lorsque l'on regarde le code, quelle est la première chose qui se tient à vous informer qu'il est de bonne/développeur expérimenté?"

Je crois que ma réponse était suffisante, juste pensé que c'était un peu étrange, alors je suis curieux de voir comment certains de vous répondre?

EDIT: merci pour toutes ces réponses. L'une des raisons pourquoi j'ai posé cette question ici est seulement parce que beaucoup de ces réponses sont les mêmes que j'ai commencé à dire, mais ils intervieweur n'auront de cesse de m'interrompre pour réitérer, "OUI, mais quelle est la PREMIÈRE chose?" qui me poussent à croire que ma réponse n'était pas ce qu'il cherchait.

96voto

Kristopher Johnson Points 34554

Beaucoup de développeurs expérimentés écrire du code que je déteste lire, donc il n'y a vraiment aucun moyen de déterminer si quelqu'un est bon, avec un rapide coup d'œil.

Les choses que je recherche, par ordre d'importance, sont:

  • court fonctions (généralement de moins de dix lignes de long), chacun avec une seule mission claire et un nom descriptif
  • évitez d'empiler trop profond ("trop profond" n'est pas bien définie, mais à plus de deux niveaux d'indentation est généralement un mauvais signe)
  • bon noms de classes, des fonctions, des variables, etc.
  • a facile à trouver "crochets" pour l'ajout de nouvelles fonctionnalités
  • idiomatiques (Qui est, si c'est du C++, il semblerait que C++ doit regarder; si c'est la Java, il ressemble à Java.)
  • fait bon usage de la bibliothèque standard/cadre (je n'aime pas voir les roues réinventé.)
  • pas de superflu commentaires (qui sont la marque de quelqu'un qui ne peut pas vraiment penser dans le code)
  • la bonne utilisation de l'espace (les lignes vides sont bons)

En adhérant à ces préférences ne garantit pas que la personne est un bon/développeur expérimenté, mais il me donne une bonne première impression. Quelqu'un qui prend soin d'obtenir ces choses n'a probablement beaucoup d'autres choses aussi.

Vous ne savez pas vraiment comment bien quelqu'un de code jusqu'à ce que vous essayez de le changer. J'ai vu du code, c'était vraiment laid qui, néanmoins, a été facilement maintenable, et j'ai vu assez de code qui ont dû être jetés et réécrit à partir de zéro. L'examen de code vous donne une bonne impression pour un programmeur de capacités tactiques, mais pas de capacités stratégiques.

42voto

Otávio Décio Points 44200

Chaque fonction fait exactement une chose.

33voto

Bill the Lizard Points 147311

La structure vous en dit beaucoup. Sans même lire le code, vous pouvez en déterminer la qualité, qu'il soit ou non imbriqué en profondeur.

25voto

Tom Cabanski Points 4952

Je cherche une bonne gestion des erreurs. Les développeurs inexpérimentés écrivent souvent du code qui suppose que tout ira bien. Les développeurs expérimentés vérifieront les contrats de paramètre / code et ajouteront de nombreuses possibilités de traitement des erreurs pour faire face aux problèmes éventuels.

20voto

Jon Skeet Points 692016

Question intéressante. En y réfléchissant, je pense que beaucoup de cela dépend de la clarté de l'objectif:

  • Il est clair que cette classe est censé représenter (je suis en supposant OO code ici)
  • Est cet objectif suffisamment de portée limitée (ne pas essayer de trop en faire)?
  • Est le but de chaque variable est-elle claire?
  • Est le but de chaque méthode est-elle claire?

Si tous ceux qui sont vrai, il est probablement raisonnable de code à maintenir - et c'est le signe d'un bon développeur, de l'OMI.

Je voudrais aussi regarder pour la testabilité... c'est un peu une autre série de critères, mais en limitant la portée de chaque classe (et de le garder claire) est certainement un bon début.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X