173 votes

Quelle est la règle de codage standard la plus étrange que vous ayez été obligé de suivre ?

Quand j'ai demandé cette question J'ai presque toujours obtenu un oui définitif : vous devriez avoir des normes de codage.

Quelle est la règle de codage standard la plus étrange que vous ayez été obligé de suivre ?

Et par "le plus étrange", je veux dire le plus drôle, le pire, ou tout simplement le plus bizarre.

Dans chaque réponse, veuillez mentionner la langue, la taille de votre équipe et les effets négatifs que cela a eu sur vous et votre équipe.

25voto

John Rudy Points 16436

Le plus bizarre était lors d'un contrat il y a quelques années. Celle de @ZombieSheep en faisait partie, mais ce n'était pas la plus bizarre de cette entreprise.

Non, le plus étrange dans cette entreprise était le schéma de dénomination de la base de données. Chaque table était nommée en majuscules, avec des traits de soulignement entre les mots. Chaque table avait un préfixe (généralement de 1 à 6 caractères) qui était généralement un acronyme ou une abréviation du nom de la table principale. Chaque champ de la table est également précédé du même préfixe. Ainsi, disons que vous avez un schéma simple où les gens peuvent posséder des chats ou des chiens. Cela ressemblerait à ceci :

PER_PERSON
    PER_ID
    PER_NameFirst
    PER_NameLast
    ...
CAT_CAT
    CAT_ID
    CAT_Name
    CAT_Breed
    ...
DOG_DOG
    DOG_ID
    DOG_Name
    DOG_Breed
    ...
PERCD_PERSON_CAT_DOG (for the join data)
    PERCD_ID
    PERCD_PER_ID
    PERCD_CAT_ID
    PERCD_DOG_ID

Cela dit, aussi bizarre que cela puisse paraître au début... Il a grandi sur moi. Les raisons derrière tout cela étaient logiques (une fois qu'on s'y est habitué), car les préfixes étaient là pour rappeler les alias de table "recommandés" (et imposés !) lors de la construction des jointures. Le préfixe rendait la majorité des requêtes de jointure plus faciles à écrire, car il était très rare de devoir référencer explicitement une table avant le champ.

Au bout d'un certain temps, tous les membres de l'équipe (6 personnes sur notre projet) ont pu commencer à se référer aux tables dans la conversation en utilisant uniquement le préfixe. Un goût acquis, c'est sûr... Mais un goût qui a grandi en moi. À tel point que je l'utilise encore, lorsque j'ai cette liberté.

22voto

Binary Worrier Points 27424

Plusieurs WTF dans une boutique VB6 (je ne suis pas fier, j'avais faim et j'avais besoin de manger) entre 2002 et 2004.

Le plus ennuyeux, à mon avis, était de mettre toutes les références d'objets à zéro à la fin de la sous-fonction. C'était pour "aider" le compilateur à compter les références. Peu importe le nombre de tests que j'ai effectués pour l'AT pour prouver que ce n'était pas nécessaire, Oh non, il fallait quand même le faire, même s'il n'avait absolument aucune preuve pour l'étayer, quelle qu'elle soit. . J'ai fini par abandonner et, environ un an plus tard, j'ai trouvé un article expliquant pourquoi c'était un pantalon. J'ai apporté cet article à l'AT en pensant "J'ai eu ce salaud". Il me dit : " Oui, je le sais depuis des années, mais si vous commencez à changer la norme, les moutons ", c'est-à-dire les autres développeurs, les gens avec qui il travaillait tous les jours, " vont tout foutre en l'air ". Gob sh1te.

D'autres dans le même magasin.

  • Ne jamais supprimer le code, toujours le commenter (même si nous utilisions contrôle de source).
  • Les préfixes des noms de tables qui étaient sans signification quand j'y suis arrivé, mais devaient être appliqués sur les nouvelles tables.
  • Préfixer tous les objets avec o_ (lo_) pour les références au niveau de la procédure, mo_ pour module, go_ pour global). Absolument inutile dans un projet où une variable sur deux était une référence à un objet.

J'y écrivais surtout du c++ (seul développeur c++, donc j'ai créé mes propres normes, et je les ai appliquées avec rigueur !) avec occasionnellement du vb, sinon je n'aurais pas tenu le coup.

20voto

Cory Foy Points 5181

Chaque parenthèse de début et de fin était requis pour faire un commentaire :

public void HelloWorld(string name)
{

  if(name == "Joe")
  {
    Console.WriteLine("Hey, Joe!");
  } //if(name == "Joe")
  else
  {
    Console.WriteLine("Hello, " + name);
  } //if(name == "Joe")
} //public void HelloWorld(string name)

C'est ce qui m'a conduit à écrire mon premier plugin Visual Studio pour automatiser cela.

13voto

Ce qui me rend fou, c'est que les gens suffixent le champ ID d'une table avec le nom de la table. Qu'est-ce qui ne va pas avec un simple ID ? Vous allez devoir l'aliaser de toute façon... pour l'amour de tout ce qui est sacré !

Imaginez à quoi ressemblent vos instructions SQL lorsque vous avez des champs ID appelés IDSEWEBLASTCUSTOMERACTION et IDSEEVENTLOGGER.

12voto

Zsolt Botykai Points 20615

Vous ne devez utiliser que des noms de table de cinq lettres et les deux derniers caractères sont réservés à l'utilisation de la fonction IO .

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