J'ai entendu des voix dire que rechercher une valeur nulle renvoyée par une méthode est une mauvaise conception. J'aimerais entendre certaines raisons pour cela.
pseudocode:
variable x = object.method()
if (x is null) do something
J'ai entendu des voix dire que rechercher une valeur nulle renvoyée par une méthode est une mauvaise conception. J'aimerais entendre certaines raisons pour cela.
pseudocode:
variable x = object.method()
if (x is null) do something
La logique derrière le fait de ne pas retourner la valeur null est que vous n'avez pas à vérifier et donc votre code n'a pas besoin de suivre un chemin différent en fonction de la valeur de retour. Vous pourriez vouloir vérifier l' Objet Null Modèle qui fournit plus d'informations sur cette.
Par exemple, si je devais définir une méthode en Java qui a retourné une Collection, je voudrais préfèrent généralement de retour d'un regroupement vide (c - Collections.emptyList()
) plutôt que null car cela signifie que mon client code est plus propre; par exemple,
Collection<? extends Item> c = getItems(); // Will never return null.
for (Item item : c) { // Will not enter the loop if c is empty.
// Process item.
}
... ce qui est plus propre que:
Collection<? extends Item> c = getItems(); // Could potentially return null.
// Two possible code paths now so harder to test.
if (c != null) {
for (Item item : c) {
// Process item.
}
}
En voici la raison.
Dans le Code Propre par Robert Martin , écrit-il, que de retourner la valeur null est une mauvaise conception, quand on peut, au lieu de revenir, disons, tableau vide. Depuis le résultat attendu est un tableau, pourquoi pas? Il va vous permettre d'effectuer une itération sur le résultat, sans conditions supplémentaires. Si c'est un entier, peut-être 0 suffit, si c'est un hachage hachage vide. etc.
Le principe est de ne pas forcer le code appelant à traiter immédiatement les questions. Code appelant peut ne voulez pas à s'occuper d'eux. C'est aussi pourquoi, dans de nombreux cas, des exceptions est mieux que le néant.
Bons usages de retourner null:
De mauvais usages: Essayer de remplacer ou de masquer des situations exceptionnelles telles que:
Dans ces cas, la levée d'une exception est plus suffisant, étant donné que:
Toutefois, les Exceptions ne doivent pas être utilisés pour gérer normale du programme, les conditions d'exploitation telles que:
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.