Java >> Java Tutorial >  >> Java

Richtlinien zur Vermeidung von Null-Check-Anweisungen

Wenn Sie die NullPointer-Ausnahme satt haben, sind Sie nicht allein. In diesem Beitrag zeige ich einige Richtlinien zur Vermeidung von Nullprüfungen. Haben Sie jemals Code wie den folgenden gesehen?

Object obj = anotherobj.getObject();
if(obj != null)
{
    // do something with obj
}

Stellen Sie sich vor, Sie müssten eine solche if-Anweisung schreiben block für jedes Objekt oder jede Variable, die Sie aus verschiedenen Vertragsobjekten in Ihrem Code abrufen, würde dies den Code umständlich und unlesbar machen. Außerdem vermittelt es einen Eindruck von der Naivität der Entwickler in solchen Fällen.

Ich schreibe diesen Beitrag basierend auf einer heftigen Diskussion über StackOverflow Avoiding Null Statements. Ich verwende diesen Beitrag nur als Referenz und schreibe meine eigenen Richtlinien auf der Grundlage meiner eigenen Erfahrung. Antworten auf diesen Beitrag auf StackOverflow sind einen Besuch wert.

Richtlinien zur Vermeidung der Überprüfung von Null-Anweisungen

  1. Wenn der Angerufene einen Vertrag einhält, niemals eine Null zurückzugeben, muss der Aufrufer keine Prüfanweisung für einen Nullwert hinzufügen. Aber das ist die grundlegende Prämisse, der ein Entwickler folgen sollte, wenn er Methoden schreibt.
  2. Meistens ist das Problem nicht die Methode, die null zurückgibt, aber die in diesen Methoden implementierte Logik ist nicht genau. Wenn die Geschäftslogik einer Methode einen Weg zur Behandlung von Fehlern kennt, wenn sie die richtigen Daten zurückgeben kann, sollte sie einen Fehler zurückgeben, anstatt null zurückzugeben.
public String getEmployeeInformation(String empcode)
{
   if (empcode == null)
   {
     // instead of returning null, throw an error
      throw new IllegalArgumentException(" empcode is null ");
   }
}

3.  Java 8 bietet ein neues Schlüsselwort optional 

public Optional<Employee> getEmployeeInfoWithSSN(String ssn) 
{ 
  .............. 
}

Wenn also die Mitarbeiterinformationen mit einer bestimmten SSN nicht gefunden werden, muss der Aufrufer dieser Methode explizit an das Typsystem denken.

4.  Intellij Idea bietet Java-Annotationen wie `Nullable` und `NotNull` 

5.  Junit-Testfälle für Ihre Klassen schreiben, die auf `assertNotNull()` prüfen

6.  Java 7 bietet eine Hilfsmethode für Objekte, Objects.requireNonNull();

Schlussfolgerung

In diesem Beitrag habe ich Richtlinien gezeigt, um Nullprüfungen zu vermeiden. Sobald Sie diese Strategien anwenden, machen Sie Ihr Leben als Programmierer viel einfacher.

Referenzen

  1. Vermeiden Sie Nullprüfanweisungen
  2. Optionales Schlüsselwort


Java-Tag