J'entends souvent ces deux précieuses pratiques de programmation: (1) les lignes de code doivent avoir 80 caractères ou moins et (2) utiliser des noms descriptifs pour les variables, les méthodes, les classes, etc. Je comprends cependant le raisonnement de ces deux conseils. , ils semblent souvent être des compromis les uns des autres. Si je garde mon code en dessous de 80 caractères / ligne, je finis par utiliser des noms moins descriptifs (en particulier en Python dans lequel chaque retrait compte pour 4 caractères) mais si j'utilise des noms plus descriptifs, je me retrouve avec des lignes de plus de 80 caractères.
Donc, ma question est de savoir lequel de ces deux conseils est le plus important à respecter si le choix doit être fait? Je me pose la question en tant que programmeur indépendant (amateur), mais plus important encore du point de vue d'un ingénieur logiciel travaillant pour une grande entreprise.
Réponses:
Gardez vos tirets peu nombreux, vos noms descriptifs et n'ayez pas peur de casser une ligne.
Gardez vos tirets peu.
Souvent, lorsque je me retrouve dans une lutte entre les retraits et la dénomination descriptive, je prends du recul et regarde mon niveau de retrait. Si vous indenter plus de 3 ou 4 niveaux (2 niveaux sont automatiques et inévitables dans de nombreux cas. Lire: définition de méthode de classe), vous souhaiterez peut-être restructurer votre code, en retirant les fonctionnalités d'une fonction ou d'une méthode.
Vos noms descriptifs
Vous devez toujours garder vos noms descriptifs. Les noms descriptifs créent un code auto-documenté. Vous pouvez essayer de raccourcir les noms dans certains cas, mais la lisibilité passe avant tout.
N'ayez pas peur de casser une ligne
La merde arrive. Si vous dépassez 80 caractères et que vous ne voyez pas de toute façon récupérer de l'espace sur la ligne, cassez-le. La plupart des langues ne se soucient pas des sauts de ligne, donc coupez la ligne en plusieurs. Ne vous contentez pas de choisir un emplacement aléatoire. Gardez les choses regroupées logiquement et indenter un autre niveau lorsque vous rompez la ligne.
la source
Pourquoi pas les deux?
Tout d'abord, «descriptif» et «verbeux» ne sont pas les mêmes. Par exemple, si vous écrivez une boucle assez locale,
i
est un très bon nom de variable pour la variable de boucle;current_iteration_index
, bien que sans doute plus descriptif et certainement plus verbeux, est bien pire et n'ajoute aucune information, car l'utilisation dei
comme variable de boucle est à peu près universellement acceptée, et il n'y a pas d'autre sens ài
cela.Les bons noms de variables sont descriptifs, en ce sens qu'un programmeur familiarisé avec l'idiome du langage et les conventions de la base de code peut facilement deviner quel est leur rôle, mais ils sont également suffisamment concis pour garder les choses compactes.
La limite de 80 caractères, bien qu'initialement une conséquence des limitations techniques des terminaux de texte des années 1970, est toujours appréciée par beaucoup aujourd'hui, et même s'il existe encore des raisons techniques (longueurs de ligne maximales dans certains protocoles réseau, notamment liés à la messagerie électronique), les raisons les plus impérieuses sont d'ordre psychologique et social. Il s'avère que les longueurs de ligne autour de la marque de 66 caractères rendent l'expérience de lecture la plus confortable pour la prose en langage naturel (la taille de la police ne fait pas de différence, et par conséquent, la taille de l'écran ou du papier non plus); Les limites de ligne de 80 caractères sont assez proches de cela, mais comme la majeure partie d'un morceau de code typique est généralement en retrait d'au moins un ou deux niveaux (ce qui signifie entre 4 et 16 caractères, selon les paramètres d'indentation),
Un autre effet de s'en tenir aux lignes de 80 caractères est que c'est un assez bon indicateur du moment où les choses sont trop compliquées. Les lignes aussi longues sont généralement causées par l'un des éléments suivants:
if ((user.isLoggedIn && user.hasPermission(page.getRequiredPermission()) && !user.isBanned) || page.getRequiredPermission() == null)
); cela aussi est généralement assez difficile à déchiffrer et le code doit être réécrit en quelque chose de plus structuré. Très probablement, l'expression fait trop et devrait être prise en compte dans une méthode ou une fonction.print(translate(LANG_EN, LANG_ES, "This is the home page. Feel welcome to click around and see what we have."));
. Déplacez le littéral dans une variable ou une constante; il peut toujours dépasser la longueur de la ligne, mais si vous le faites régulièrement, le lecteur peut au moins ignorer en toute sécurité la partie invisible de la ligne, en supposant que seul le reste du littéral suit. Ou mieux encore, déplacez les littéraux hors du code et dans un magasin de données externe (fichier, base de données, etc.).if
instructions dans une méthode de classe (c'est 32 colonnes d'indentation pour les paramètres typiques). Encore une fois, l'imbrication profonde rend le code complexe et difficile à lire, et devrait être évitée comme la peste - en termes simples, l'imbrication profonde déborde la pile du cerveau humain pendant la lecture.Tous ces éléments sont en fin de compte des symptômes de choses que vous ne préféreriez pas avoir dans votre base de code à long terme, et l'application de limites de 80 caractères est un moyen agréable et simple qui aide à réduire la complexité et la lisibilité. (Cela ne veut pas dire que vous ne pouvez pas écrire du code parfaitement illisible dans 80 colonnes: les divers concours de code quelque chose d'obscurci sont un contre-exemple clair).
la source
La dénomination descriptive est de loin plus importante. Dans la plupart des interfaces, nous pouvons faire défiler pour voir des lignes plus longues. Le système ne peut en aucun cas vous aider à traduire des variables et des fonctions mal nommées.
la source
80 caractères par ligne ne sont pas difficiles à respecter, même les noms sont longs car il existe de nombreuses façons de diviser une seule ligne de code long en plusieurs codes courts, par exemple, je peux diviser une déclaration de condition en C en plusieurs lignes pour en tenir moins de 40 personnages,
vous pouvez également diviser une ligne de fonctions en plusieurs lignes.
Par conséquent, les deux règles de dénomination descriptive et les 80 lignes de caractères n'ont pas de contradiction, elles peuvent coexister pour améliorer la lisibilité.
la source
La limite de 80 est quelque chose qui aurait dû être augmenté il y a longtemps. Notez que cette limite est utilisée depuis l'âge où la longueur de chaque identifiant était limitée à 8 caractères et une seule police sur l'écran / l'imprimante. Aucune possibilité de changer la taille de la police.
Dieu, nous avons maintenant des technologies d'écran et d'impression différentes. Nous avons des langages de programmation très différents. Il n'y a plus de raison d'utiliser 80 caractères. Augmentez-le à 120 caractères au moins.
Même alors, cela ne devrait pas être une limite stricte. Vous passez un personnage sur la ligne? Eh bien, rien ne se passe!
Éditer:
Réponses détaillées sur l'historique de la limite de 80 caractères
Personnages par ligne sur Wikipédia
la source