2010-10-05 5 views
2

J'essaie de réduire certaines des mauvaises habitudes d'un "programmeur senior" autoproclamé. Il insiste sur l'écriture Si les blocs comme celui-ci:opinion de style re. empty If block

if (expression) {} 
else { 
    statements 
} 

Ou comme il l'écrit habituellement dans ASP classique VBScript:

If expression Then 
Else 
    statements 
End If 

L'expression pourrait être quelque chose aussi facilement niée comme:

if (x == 0) {} 
else { 
    statements 
} 

En dehors de la clarté du style de codage, quelles autres raisons peux-je donner à mon avis que ce qui suit est préféré?

if (x != 0) { 
    statements 
} 

Ou encore le cas plus général (encore une fois en VBScript):

If Not expression Then 
    statements 
End If 

Répondre

3

Les raisons qui me viennent à l'esprit pour soutenir votre opinion (que je suis d'accord avec BTW) sont:

  1. Plus facile à lire (ce qui implique plus facile à comprendre)
  2. Plus facile à entretenir (à cause du point # 1)
  3. Compatible avec les styles de codage 'établis' dans la plupart des principaux langages de programmation

Je n'ai JAMAIS trouvé le style/la forme de codage que votre collègue insiste pour utiliser.

+0

Oui, il a une façon unique de faire à peu près tout. –

1

Je l'ai essayé dans les deux sens. McConnell dans Code Complete dit qu'il faut toujours inclure à la fois le then et le else pour démontrer qu'on a pensé aux deux conditions, même si l'opération n'est rien (NOP). Il semble que votre ami le fasse.

J'ai trouvé cette pratique d'ajouter aucune valeur dans le domaine parce que le test unitaire gère cela ou il est inutile. YMMV, bien sûr. Si vous voulez vraiment brûler son bacon, calculez combien de temps il passe à écrire les relevés vides, multipliez-le par 1,5 (pour tester), puis multipliez ce nombre par son taux horaire. Envoyez-lui une facture pour le montant.


En aparté, je déplace la Accolade près de la ligne else:

if (expression) { 
} else { 
    statements 
} 

La raison étant qu'il est tentant de (ou facile à accidentellement) ajouter une déclaration en dehors de la bloc.

Pour cette raison, j'abhorre une seule ligne de déclarations (nus), de la forme

if (expression) 
    statement 

Parce qu'il peut obtenir fugly (et le buggy) très vite

if (expression) 
    statement1 
    statement2 

statement2 courrez toujours , même si cela pourrait ressembler à expression. Prendre l'habitude de toujours utiliser des crochets va tuer ce point d'achoppement mort.