J'ai répondu à des discussions ici (ou au moins commented) avec des réponses contenant du code comme celui-ci, mais je me demande s'il est bon ou mauvais d'écrire une série de branches avec une (ou plusieurs) des branches rien en eux, généralement pour éliminer la vérification de null
dans chaque branche.Est-ce qu'une branche Si ne fait rien d'une odeur de code ou d'une bonne pratique?
Un exemple (code C#):
if (str == null) { /* Do nothing */ }
else if (str == "SomeSpecialValue")
{
// ...
}
else if (str.Length > 1)
{
// ...
}
au lieu de:
if (str != null && str == "SomeSpecialValue")
{
// ...
}
else if (str != null && str.Length > 1)
{
// ...
}
Et, bien sûr, cela est juste un exemple, comme je l'ai tendance à les utiliser avec un complexe plus grand et plus Des classes. Et dans la plupart de ces cas, une valeur null
indiquerait de ne rien faire.
Pour moi, cela réduit la complication de mon code et a du sens quand je le vois. Alors, est-ce une bonne ou une mauvaise forme (une odeur de code, même)?
Je pense que c'est bien si cela rend votre code plus lisible et évite les conditions alambiquées. Voter pour fermer, "est-ce bon ou mauvais" est trop subjectif. – casablanca
Le fait que tous ces contrôles sont nécessaires "juste au cas où" la valeur est nulle est une odeur en soi, à mon humble avis. En faisant cela, vous cachez des bugs. – SimonJ
@SimonJ: Bon point. Au moins dans ce cas, il devrait lancer une exception si une valeur null n'est pas attendue. – casablanca