J'entends souvent ces deux pratiques de programmation précieuses: (1) les lignes de code doivent comporter 80 caractères ou moins et (2) utiliser des noms descriptifs pour les variables, les méthodes, les classes, etc. Je comprends le raisonnement pour ces deux mots de conseil, cependant 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 indentation compte comme 4 caractères), mais si j'utilise plus de noms descriptifs, je finis avec des lignes de plus de 80 caractères.
Donc, ma question est laquelle de ces deux conseils sont plus importants à respecter si le choix doit être fait? Je me demande en tant que programmeur indépendant (hobbyiste), mais surtout de la perspective d'un ingénieur logiciel travaillant pour une entreprise plus grande.
Gardez vos indents quelques-uns, vos noms descriptifs et n'ayez pas peur de casser une ligne.
Souvent, lorsque je me retrouve dans une lutte entre les retraites vs nommer descriptives, je prends un pas en arrière et regarde mon niveau d'indentation. Si vous indentez plus de 3 ou 4 niveaux (2 niveaux est automatique et inévitable dans de nombreuses instances. Read: Méthode de classe Définition), vous pouvez restructurer votre code, une fonctionnalité abstraite sur une fonction ou une méthode.
Vous devriez toujours garder vos noms descriptifs. Les noms descriptifs créent un code auto-documentant. Vous pouvez essayer de raccourcir les noms dans certains cas, mais la lisibilité vient en premier.
La merde arrive. Si vous atteignez plus de 80 caractères et que vous ne voyez de toute façon pas de récupérer un espace dans la ligne - rompez-le. La plupart des langues ne se soucient pas des pauses de ligne, alors rompez la ligne en plusieurs. Ne vient pas de choisir un endroit aléatoire. Gardez les choses groupées logiquement et indentez un autre niveau lorsque vous rompez la ligne.
Pourquoi pas tous les deux?
Tout d'abord, "descriptifs" et "verbose" 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 verbose, est bien pire et n'ajoute aucune information du tout, car l'utilisation de i
comme une variable de boucle est presque universellement acceptée, et là n'est pas une autre signification pour i
que cela.
Les bons noms de variables sont descriptifs, en ce sens qu'un programmeur familiarisé avec l'idiome de la langue et les conventions du codeBase peuvent facilement deviner quel est leur rôle, mais ils sont également suffisamment concis pour garder les choses compactes.
La limite de 80 caractères, tandis qu'à l'origine une conséquence des limitations techniques des terminaux de texte de 1970, est toujours valorisée par de nombreuses personnes aujourd'hui, et même s'il existe encore des raisons techniques (des longueurs de ligne maximales dans certains protocoles de réseau, notamment le courrier électronique), Les raisons les plus convaincantes sont psychologiques et sociales. Il s'avère que les longueurs de la ligne autour de la marque de 66 caractères constituent l'expérience de lecture la plus confortable pour la prose de langue naturelle (la taille de la police ne fait pas une grande différence, et par conséquent, ni l'écran ou la taille du papier); Les limites de la ligne de 80 caractères sont assez proches de cela, mais étant donné que la majeure partie d'un morceau typique de code est généralement indentée d'au moins un ou deux niveaux (ce qui signifie entre 4 et 16 caractères, en fonction des paramètres d'indentation), nous nous retrouvons avec quelque chose C'est assez proche de 66 (entre 64 et 76 caractères).
Un autre effet de coller à 80 caractères est que c'est un très bon indicateur de quand les choses sont trop compliquées. Les lignes longues sont généralement causées par l'une des opérations suivantes:
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 dans quelque chose de plus structuré. Très probablement, l'expression fait trop et doit ê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 en une variable ou une constante; Il pourrait encore dépasser la longueur de la ligne, mais si vous le faites de manière cohérente, 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, quoi que ce soit).if
déclarations dans une méthode de classe (c'est-à-dire 32 colonnes d'indentation pour les paramètres typiques). Encore une fois, la nichonnée profonde fait pour un code complexe et difficile à lire, et doit être évité comme la peste - mettre simplement la nid d'imbrication profonde débordant de la pile du cerveau humain tout en lisant.Tous ceux-ci sont finalement des symptômes de choses que vous préférez ne pas avoir dans votre base de code à long terme et l'application des limites de 80 caractères est une solution simple et simple qui contribue à maintenir la complexité et la lisibilité. (Cela ne veut pas dire que vous ne pouvez pas écrire un code parfaitement illisible dans 80 colonnes: les divers concours obscurcissés-quelque chose sont un contre-exemple clair).
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. En aucun cas, le système ne peut vous aider à traduire des variables et des fonctions mal nommées.
80 limite est quelque chose qui aurait dû être augmenté il y a longtemps. Notez que cette limite est utilisée depuis l'âge lorsque 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 différentes technologies d'écran et d'impression. Nous avons des langages de programmation très différentes. Il n'y a plus de raison d'utiliser 80 caractères. Augmentez-la à 120 caractères au moins.
Même alors, cela ne devrait pas être une limite difficile. Vous allez un personnage sur la ligne? Eh bien, rien ne se passe!
Éditer:
réponses détaillées sur l'historique de 80 caractères
caractères par ligne sur wikipedia
Une étude de l'Université d'État de Wichita a constaté que CPL n'avait que de petits effets sur la lisibilité, y compris des facteurs de vitesse et de compréhension. Une fois demandé des préférences, toutefois, 60% des répondants ont indiqué une préférence pour les lignes les plus courtes (35 CPL) ou les plus longues (95 CPL) utilisées dans l'étude. Dans le même temps, 100% des répondants ont choisi l'une de ces quantités comme étant les moins souhaitables.