Question

Quel avantage, le cas échéant, est fourni par le formatage du code C comme suit:

while(lock_file(lockdir)==0)
    {
    count++;
    if(count==20)
        {
        fprintf(stderr,"Can't lock dir %s\n",lockdir);
        exit(1);
        }
    sleep(3);
    }
if(rmdir(serverdir)!=0)
    {
    switch(errno)
        {
        case EEXIST:
            fprintf(stderr,"Server dir %s not empty\n",serverdir);
            break;
        default:
            fprintf(stderr,"Can't delete dir %s\n",serverdir);
        }
    exit(1);
    }
unlock_file(lockdir);

versus quelque chose de plus typique tel que

while(lock_file(lockdir)==0) {
    count++;
    if(count==20) {
        fprintf(stderr,"Can't lock dir %s\n",lockdir);
        exit(1);
    }
    sleep(3);
}
if(rmdir(serverdir)!=0) {
    switch(errno) {
        case EEXIST:
            fprintf(stderr,"Server dir %s not empty\n",serverdir);
            break;
        default:
            fprintf(stderr,"Can't delete dir %s\n",serverdir);
    }
    exit(1);
}
unlock_file(lockdir);

Je trouve la version supérieure difficile à lire et à corriger le niveau d’indentation pour les instructions situées en dehors d’un long bloc, en particulier pour les longs blocs contenant plusieurs blocs imbriqués.

Le seul avantage que je peux voir est simplement d'être différent et de laisser vos empreintes digitales sur le code que vous avez écrit.

Je remarque que le formatage vim devra être roulé à la main pour traiter les majuscules.

Était-ce utile?

La solution

En respectant certaines normes de mise en forme et de commentaire, vous manifestez tout d'abord votre respect envers les autres personnes qui liront et modifieront le code que vous avez écrit. Si vous n'acceptez pas les règles et écrivez un code ésotérique, le résultat le plus probable est que vous ne pourrez pas communiquer efficacement avec d'autres personnes (programmeurs). Le format de code est un choix personnel si le logiciel n’est écrit que par vous et pour vous et que personne n’est censé le lire, mais combien de logiciels modernes n’ont été écrits que par une seule personne?

Autres conseils

L’exemple le plus connu est connu sous le nom de "style Whitesmiths". L'entrée de Wikipedia sur les styles d'indentation explique plusieurs styles, ainsi que leurs avantages et inconvénients.

Rien. L'indentation et d'autres normes de codage sont une question de préférence.

L'indentation que vous voyez est Style Whitesmiths . Il est décrit dans la première édition de Code Complete en tant que "Limites de bloc begin-end". L'argument de base de ce style est que, dans des langages tels que C (et Pascal), un si gouverne une seule instruction ou un bloc. Ainsi, le bloc entier, et pas seulement son contenu, doit être subordonné à l'instruction si en étant mis en retrait de manière cohérente.

XXXXXXXXXXXXXXX       if (test)
   XXXXXXXXXXXX           one_thing();

XXXXXXXXXXXXXXX       if (test)
   X                     {
   XXXXX                 one_thing();
   XXXXX                 another_thing();
   X                     }

À la première lecture de ce livre (dans les années 90), j’ai trouvé l’argument de "bornage des blocs début-fin". être convaincant, même si je ne l’aimais pas beaucoup quand je le mettais en pratique (en Pascal). Je l’aime encore moins en C et le trouve déroutant à lire. Je finis par utiliser ce que Steve McConnel appelle "Emulating Pure Blocks". ( le style Java de Sun , qui est presque K & amp; R ).

XXXXXXXXXXXXXX X      if (test) {
   XXXXXX                one_thing();
   XXXXXX                another_thing();
X                     }

Il s’agit du style le plus courant utilisé pour programmer en Java (ce que je fais toute la journée). Cela ressemble également beaucoup à mon langue précédente , qui était un "bloc pur". langage, ne nécessitant aucune "émulation". Il n'y a pas de corps à une seule instruction, les blocs sont inhérents à la syntaxe de la structure de contrôle.

IF test THEN
   oneThing;
   anotherThing
END

Cela me semble plutôt standard. Le seul changement personnel que je ferais est d'aligner les accolades sur le début de la ligne précédente, plutôt que sur le début de la ligne suivante, mais ce n'est qu'un choix personnel.

Quoi qu’il en soit, le style de formatage que vous envisagez existe, il en existe un standard pour C et C ++, car il facilite la lecture du code, et en particulier en regardant le niveau d’indentation, vous pouvez dire où vous êtes avec des boucles imbriquées, conditionnelles, etc. Par exemple:

if (x == 0) 
{
  if (y == 2)
  {
    if (z == 3)
    {
       do_something (x);
    }
  }
}

OK, dans cet exemple, il est assez facile de voir ce qui se passe, mais si vous mettez beaucoup de code dans ces instructions if, il peut parfois être difficile de savoir où vous vous trouvez sans indentation cohérente.

Dans votre exemple, examinez la position de la déclaration exit (1). Si elle n'était pas indentée de la sorte, il serait difficile de savoir où elle se trouvait. En l'état, vous pouvez dire que c'est à la fin de cette grosse déclaration if.

Préférence personnelle je l'aurais pensé? Je suppose qu'il a le bloc de code sur une ligne verticale, donc plus facile à résoudre en un coup d'œil? Personnellement, je préfère que l’attelle commence directement sous la ligne précédente

Le formatage du code est un goût personnel. Tant qu’il sera facile à lire, la maintenance en coûtera!

C'est juste un autre style - les gens codent comme ils aiment, et c'est un style accepté (bien que ce ne soit pas mon préféré). Je ne pense pas que cela présente beaucoup d'inconvénient ou d'avantage par rapport au style plus courant dans lequel les crochets ne sont pas en retrait, mais le code qu'ils contiennent. On pourrait peut-être le justifier en disant qu'il délimite plus clairement les blocs de code.

Pour que ce format ait "avantage", nous avons vraiment besoin d’un code C équivalent dans un autre format que celui que nous avons comparé!

Là où je travaille, ce mécanisme d'indentation est utilisé afin de faciliter la création d’un mécanisme d’éditeur de pliage développé localement.

Ainsi, je ne vois rien de fondamentalement faux avec ce format - dans certaines limites rationnelles, le formatage est une question de préférence personnelle.

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