Wie oft und wo zu machen Null-Checks

cmlonder:

Ich versuche, null Kontrollen zu vermeiden overdo, aber zur gleichen Zeit mag ich NULL-Prüfung machen, wenn es den Code robuster zu machen braucht. Aber manchmal fühle ich mich wie es so viel zu sein, beginnt Defensive, da ich nicht implementieren API. Dann vermeide ich einige null-Kontrollen, aber wenn ich Unit-Tests starten, beginnt immer für Laufzeitausnahmen zu warten. Was ist der richtige Ansatz, wie die Balance zu fühlen. Hier sind die Notizen, die ich bisher gesammelt haben:

  • Vermeidung unnötige Null-Kontrollen in privaten Methoden der Instanz der Klasse, da die richtigen null Kontrollen vor und Instanzklasse verantwortlich dafür ist, nicht jede Funktion
  • null Kontrollen in öffentlichen Methoden machen und Funktion Verhalten im Vertrag für die öffentliche Nutzung erklären
  • machen null Kontrollen im Konstruktor

Lassen Sie mich ein Dummy-Beispiel, in dem meine verwirrend beginnt geben:

Hier ist die Standard-Funktion der Schnittstelle:

default void someFunction() {

// instantiaded foo and filters
foo = processFoo(foo, filters);

// do some operations with foo
// null check if processFoo's contract returns null (description in the implementation)

}

Implementierung:

Foo processFoo(foo, filters) {
// Should I null check foo and filters?

// Operations with foo.someFields
// Operations with filters.someFields

return foo; // If I null check then I should return some exception or null to the caller function. 
// If I don't null check just return received foo.
}
BigMike:

Auf einer allgemeinen Regel, die ich nie für NULL-Werte überprüfen, wenn ich in der Kontrolle der Anrufe, aber wenn mein Code kann von jemand anderem genannt werden, ich Schecks tun erzwingen, da Sie über eine API-Spezifikation sprechen, können Sie überprüfen, Eingangs Parameter und werfen Illegal.

Natürlich ist dies nicht erforderlich ist, die meisten der Zeit, wenn Sie eine NPE haben, gibt es eine irgendwo zugrunde liegenden Fehler, aber wenn Sie nicht von Anrufen in die totale Kontrolle sind, werden Sie auf jeden Fall brauchen etwas mehr Mühe. (Besonders, wenn Ihre API wird häufig genannt werden, müssen Sie etwas Hilfe Sie schlechte Anrufmuster Spuren / identifizieren).

Wenn ein API-Gestaltung, beiseite die Architektur selbst, haben Sie auch auf Wartung / Fehlersuche und Sicherheit zu konzentrieren, expecially, wenn die API öffentlich ausgesetzt ist (was auch bedeutet, jeden einzelnen Parameter Hygienisierung).

Ich denke du magst

Origin http://43.154.161.224:23101/article/api/json?id=119960&siteId=1
Empfohlen
Rangfolge