Question

Mon intention dans cette question est de ne pas être pédant, mais plutôt d'explorer un axe négligé d'un sujet important ( l'utilisation de espace). De nombreux débats et de soins a été mis sur l'utilisation d'espaces horizontaux, après une condition indenter, un espace entre un si et entre parenthèses, etc. En fait, la question est considérée comme si importante et controversée que, non seulement certaines entreprises ont des règles et des normes pour, mais certaines entreprises ont même des règles interdisant de discussion.

Pourquoi est-il, compte tenu de l'état d'un espace horizontal, que la discussion sur un espace vertical est une question morte? Pourquoi le x plus important que le y ? Il y a quelques jours, j'ai remarqué que quand je la lecture du code, je, sans y penser, modifient souvent les regroupements verticaux des déclarations. Ayant le code d'autres peuples lu maintenant, avec un oeil vers un espace vertical, j'ai remarqué plusieurs motifs, je demande donc stackoverflow:

  • Quelles règles dures et douces appliquez-vous à un espace vertical?
  • Y at-il des utilisations qui sont un espace vertical, généralement considérés comme très mauvais ou très bonnes pratiques?
  • Avez-vous trouvé le code de lecture avec « correcte » espace vertical a aidé à le comprendre?
  • Est-ce que quelqu'un d'autre que typographes et me soucie?
Était-ce utile?

La solution

Je regarde l'espace vertical dans le code de la façon dont je regarde les paragraphes en prose écrite. Tout comme un paragraphe est destiné à des peines de groupe, ensemble, ont un point commun ou une idée, les lignes qui sont liées devraient être regroupées.

L'objectif global est d'améliorer la lisibilité du code. Tout comme un article sans paragraphes serait difficile à lire, ainsi est le code sans espace vertical. Et tout comme avec la prose, il y a un équilibre entre la composition des paragraphes qui sont trop courts ou trop longs. Mais à la fin, il est la plupart du temps vers le bas pour un style personnel et de préférence.

Autres conseils

Je pense que l'une des choses les plus importantes est de regrouper une étape logique, par exemple:

foo.setBar(1);
foo.setBar2(2);
foo.writeToDatabase();

bar.setBar(1)
bar.setBaz(2);
bar.writeToDatabase();

De cette façon, le code est plus facile à lire et est plus descriptif, pour moi en tout cas.

Si un groupe d'instructions est logiquement lié, je lui donne une ligne blanche avant et après. Cette séparation aide si je dois factoriser dehors dans une fonction plus tard.

En ce qui concerne doubles lignes vides. Si quelque chose est que distincte, vous devriez vraiment envisager de faire une fonction

Si un commentaire applique à plusieurs lignes de code, puis je placer des espaces après la dernière de ces lignes, à moins que il y a autre syntaxe pour briser les choses (comme la fin d'un bloc).

Partout que je fais « quelque chose » qui prend plusieurs lignes de code, immédiatement suivi par « autre chose », alors je vais soit abstrait dans des fonctions distinctes ou commentaires d'autre endroit [*]. Ainsi, les lignes de code finissent généralement regroupés en blocs courts, sauf lorsque le contrôle de débit fait (à mon avis) explicite.

Je ne se soucient un peu des espaces, mais en réalité ce sont les commentaires que je me soucie plus. Si quelques lignes de code ainsi que faire quelque chose spécifique, et cela n'a pas été pris comme fonction, je voudrais voir une description anglaise de ce qu'est cette chose. De cette façon, je peux voir que les « étapes » de la fonction ajouter véritablement à un bon résultat, alors regardez de voir que chaque étape fait ce qu'il prétend faire.

Dans les classes, je mets parfois des espaces entre les méthodes / fonctions membres, et parfois non. En C ++ je mets lespace avant spécificateurs d'accès.

Je mets des espaces entre les classes, (parfois pas pour les classes internes anonymes en Java) et entre les fonctions en dehors des cours.

Autre que cela, mon code est assez dense verticalement. J'utilise presque jamais plusieurs lignes vides, même lors de la séparation des sections d'un fichier d'en-tête et autres. Je préfère blankline-commentline-blankline plutôt que blankline-blankline, même si le commentline finit par être quelque chose de complètement banal comme « fonctions d'aide ». Je n'aime pas les styles qui ont d'énormes espace vertical entre les fonctions - si elles sont si distinct que vous ne voulez pas les voir à la fois à l'écran en même temps, je dirais que ce soit les mettre dans des fichiers différents ou à combler le trou avec Doxygen / commentaires Javadoc.

[*] Dans la version que je vérifie. J'écrire du code plus ou moins sans commentaires, puis compiler habituellement, exécuter des tests rapides, commentez, exécuter des tests appropriés, le commettre. Cela change souvent un peu, et parfois beaucoup. Par exemple, si je codage à un algorithme qui est défini avec précision à l'avance, ou à une spécification où la mise en œuvre est « évidente », je pourrais écrire les commentaires d'abord, puis le code.

Il est connu depuis des décennies que la capacité à comprendre le code d'un programmeur est généralement limitée par la quantité de ce qu'il peut voir à un moment donné. (Voir par exemple Weinberg, « Psychologie de la programmation informatique », un oldie-mais-goodie.) Dans l'ancien temps des listes de papier, les programmeurs saisir de grandes tables et de diffuser plusieurs pages de liste. De nos jours, l'écran immobilier est un peu mieux que les jours de 24x80, mais je tends toujours à réduire au minimum l'utilisation d'espaces verticaux, étant donné que beaucoup de lignes vides occupent un espace d'écran qui pourrait être me montrer le code réel.

Je me soucie certainement et ont tendance à code de groupe correctement (au moins pour mes yeux) avec des lignes vides le cas échéant. Ofttimes cela signifie beaucoup de lignes blanches, mais je considère en général le code plus lisible que de tout entassés. Tout comme les espaces autour des opérateurs sont une chose très agréable sont donc des lignes vides autour des déclarations logiquement regroupées.

Plus d'une ligne blanche à la fois regarde un peu de place, cependant.

Je trouve difficile à lire si le code est espacé verticalement irrégulière. Je vais même jusqu'à supprimer les accolades non nécessaire, ou si elle est courte, blocs tels que ifs ou Fors, placez-le sur la même ligne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top