Ich bin gegen die Idee der blinden Verteidigung gegen null für jedes Feld im Code und innerhalb jeder Methode.
Die folgende Hilfe mir zu entscheiden, wo gegen null-Werte zu überprüfen:
1- Wer Ihre Methoden werden den Aufruf wird?
Wenn eine Methode privat ist und Sie kontrollieren können, wie auf sie zugegriffen wird, sehe ich keinen Sinn darin, vor NULL-Prüfungen zu schützen, es sei denn, es ist Teil der Logik der Methode, NULL-Werte zu erwarten. Wenn eine Methode der Öffentlichkeit zugänglich gemacht wird (z. B. eine API), sollten natürlich Null-Prüfungen ein großes Problem darstellen.
2- Software Design:
Bild Sie haben method1(fromAnimalToString(animal));
und aus irgendeinem Grund fordern fromAnimalToString()
nie null zurück (Obwohl möglicherweise eine leere Zeichenfolge statt zurück).
Dann in einem solchen Fall würde es keinen Sinn machen animal != null
in method1 zu überprüfen() 's Körper
3- Prüfung:
In Software-Engineering, ist es fast unmöglich, alle möglichen Szenarien zu testen, das jemals können ausführen. Testen Sie jedoch normale und alternative Szenarien und stellen Sie sicher, dass der Fluss wie erwartet verläuft.
Wäre es nicht einfacher, einfach immer zu überprüfen, ob der Verweis auf das Objekt "null" ist? Sie können auch eine andere Route wählen und sicherstellen, dass das von Ihnen verwendete Objekt nicht null sein kann. –
Für * alle * Objektreferenzen? : o Einige von ihnen werden niemals null sein (sie sind im Konstruktor gesetzt). –
Auch wenn Sie keine Code-Verträge verwenden, sollten Sie am Anfang Ihrer Methoden Wächterklauseln schreiben. – jason