30 votes

Essayez-vous de faire en sorte que votre code soit joli ?

Je suis peut-être un programmeur anal, mais j'aime le code qui semble bon de loin. Je viens de me retrouver à aligner un style CSS pour qu'au lieu de ceci :

#divPreview {
    text-align: center;
    vertical-align: middle;
    border: #779 1px solid;
    overflow: auto;
    width: 210px;
    height: 128px;
    background-color: #fff"
}

ça ressemble maintenant à :

#divPreview {
    width: 210px;
    height: 128px;
    overflow: auto;
    text-align: center;
    vertical-align: middle;
    border: #779 1px solid;
    background-color: #fff";
}

Je vais presque toujours écrire les comparaisons numériques par ordre de taille comme

if (0 < n && n < 10)

au lieu de

if (0 < n && 10 > n)

et enfin, j'aurai tendance à organiser le code if-then-else de façon à ce que la partie THEN soit plus petite que la partie ELSE (parce que les choses les plus lourdes vont en bas, n'est-ce pas ?).

if (afflicted == true) {
  GetSome();
  HelpRight();
}
else {
  NowPlease();
}

ugh !

if (afflicted == false) {
  HowMuchTrouble();
}
else {
  IsItToDo();
  ThisReally();
}

aahhhh

Je pourrais continuer à donner d'autres exemples, mais vous voyez l'idée...

Question : Suis-je seul dans ma névrose ici ? Quel est votre code fétiche ?

71voto

Pyrolistical Points 12457

Tout style de code qui vous oblige à réorganiser les choses lorsque le code change est mauvais.

Ça foutrait les différentiels en l'air. Vous utilisez un système de contrôle de version, non ?

Il y a quelques autres choses qui rendraient votre code plus joli, mais qui bousillent les diffs.

Imaginez ce code :

int foo = 42;
int fooBar = 1024;

Maintenant, rendons-le plus joli en alignant les signes = :

int foo    = 42;
int fooBar = 1024;

Mais ensuite, on ajoute une autre variable :

int foo              = 42;
int fooBar           = 1024;
String nowLetsBeEvil = 6400;

Maintenant si vous faites un diff, les 3 lignes ont changé, alors que seule la dernière l'a fait.

Et il y a plus, aligner les paramètres entre les méthodes est mauvais

sqrt(x + y, x - z);
sqrt(x    , x    );

La virgule et le point-virgule sont bien alignés, mais si vous modifiez un jour le code, vous devrez reformater manuellement toutes les lignes sqrt qui sont ensemble et bousiller les différentiels encore.

En gros, ne faites jamais de formatage manuel. Appliquez toujours les styles de code en utilisant un IDE ou une jolie imprimante. Mais ne choisissez jamais non plus un style de code dont le format change alors que votre code n'a pas été modifié.

EDIT :

Comme indiqué dans les commentaires, certains outils de comparaison peuvent ignorer les espaces entre les lignes. C'est très bien, mais tous les outils de comparaison ne peuvent pas le faire. Si vous alignez des champs ou des paramètres, assurez-vous de le faire :

  1. Ne pas le faire manuellement
  2. Votre outil de comparaison peut ignorer les changements d'espacement.

22voto

MusiGenesis Points 49273

D'après mon expérience, le joli code fonctionne généralement très bien, tandis que le code laid se casse souvent de manière difficile à repérer. Il est vrai que le type d'esprit qui fait attention à des détails comme l'apparence du code est aussi le type d'esprit qui fait attention à des détails plus importants.

Cela dit, réorganiser les éléments d'un style CSS pour qu'ils aillent du plus court au plus long, c'est du bat*. *** fou.

21voto

krosenvold Points 35979

Condition positive en premier dans une instruction if-else, toujours. La beauté est à l'intérieur.

if (afflicted) {
    GetSome();
    HelpRight();
} else {
    NowPlease();
}

16voto

g . Points 4496

Il est important que le code ait l'air "bon", c'est pourquoi nous avons des conventions et des directives de style. L'objectif est de rendre le code facile à lire et de faire en sorte qu'un code incorrect ait l'air incorrect. Je dirais que certains des exemples présentés ici vont au-delà de cet objectif et apportent peu de valeur ajoutée.

Ordre des propriétés CSS

#divPreview {
        width: 210px;
        height: 128px;
        overflow: auto;
        text-align: center;
        vertical-align: middle;
        border: #779 1px solid;
        background-color: #fff";
}

Je trouverais plus utile d'être cohérent dans l'ordre des propriétés plutôt que de s'assurer qu'elles sont classées par ordre croissant pour chaque sélecteur. Cette convention permet de trouver plus facilement celui que l'on cherche.

Ordre des conditionnels

L'exemple que vous donnez ici me paraît logique car il montre clairement que n est compris entre 0 et 10.

if (0 < n && n < 10)

Ordre des blocs if/else

et enfin je tendrai à arranger code if-then-else de façon à ce que la partie THEN soit plus petite que la partie ELSE (parce que les choses les plus lourdes vont vers le en bas, non ?)

Je pense qu'il est plus logique d'avoir la condition positive en premier (ou la condition la plus attendue). Et le bit "== true" est redondant.

if (afflicted) {
  GetSome();
  HelpRight();
}
else {
  NowPlease();
}

11voto

Steve Points 3520

J'irais probablement encore plus loin et ferais ceci :

#divPreview {
        width            : 210px;
        height           : 128px;
        overflow         : auto;
        text-align       : center;
        vertical-align   : middle;
        border           : #779 1px solid;
        background-color : #fff";
            }

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