[JAVA] Easy Null Check - Ich möchte Ihnen die Möglichkeit geben, guten Code zu schreiben. 6 [C # Refactoring-Beispiel]

Zusätzliche Gültigkeit der einfachen Nullprüfung

Betrachten Sie den Code, der geschrieben wird, wenn beim Zuweisen eines Werts zu einer verteilten Zelle eine NullReferenceException auftritt. Ich habe den Null-Check hinzugefügt, ohne tief nachzudenken, aber es gibt viele Dinge, über die ich nachdenken muss.

Beispielcode (bevor eine Ausnahme auftritt)

Ein Code, der den von der DB im Spread erhaltenen Wert anzeigt und der Wert kann null sein oder nicht. Da es sich bei dem Spread um ein Produkt von Drittanbietern handelt, haben wir ihn durch unsere eigene Klasse ersetzt. Eines Tages trat an dem Punkt, an dem einer Zelle ein Wert zugewiesen wurde, eine NullReferenceException auf.

        public void Main(SpreadCell cell)
        {
            int? dbValue = null;
            //Der Vorgang zum Abrufen des Werts aus der Datenbank entfällt.

            //NullReferenceException tritt auf.
            cell.Value = dbValue.Value;
            
        }

        /**Zellenobjekt verbreiten**/
        private class SpreadCell
        {
            public Object Value { get; set; }
        }
java
    public void main(SpreadCell cell) {
        Integer dbValue = null;
        //Der Vorgang zum Abrufen des Werts aus der Datenbank entfällt.

        //NullPointErexception tritt auf.
        cell.setValue(dbValue.intValue());
    }

Beispielcode (Code, der nach dem Auftreten einer Ausnahme entspricht)

Ich füge einen Null-Check hinzu, ohne nachzudenken, und es gibt keinen anderen. Beachten Sie, dass Sie vor allem keine Nullprüfung benötigen.

        public void Main(SpreadCell cell)
        {
            int? dbValue = null;
            //Der Vorgang zum Abrufen des Werts aus der Datenbank entfällt.

            //Weisen Sie einen Wert nur zu, wenn er nicht Null ist.
            if (dbValue != null)
            {
                cell.Value = dbValue.Value;
            }          
        }
java
    public void main(SpreadCell cell) {
        Integer dbValue = null;
        //Der Vorgang zum Abrufen des Werts aus der Datenbank entfällt.

        //Weisen Sie einen Wert nur zu, wenn er nicht Null ist.
        if (dbValue != null) {
            cell.setValue(dbValue.intValue());
        }
    }

Code nach dem Refactoring

Es ist kein Problem, wenn der nullfähige Typ so ersetzt wird, wie er ist. Wenn Sie hundert Schritte angeben und eine Nullprüfung durchführen, geben Sie bitte den Zelleninitialisierungscode ein.

        public void Main(SpreadCell cell)
        {
            int? dbValue = null;
            //Der Vorgang zum Abrufen des Werts aus der Datenbank entfällt.

            //Sie können es so ersetzen, wie es ist.
            cell.Value = dbValue;

            //Wenn Sie die if-Anweisung verwenden, initialisieren Sie sie bitte.
            cell.Value = null;
            if (dbValue != null)
            {
                cell.Value = dbValue.Value;
            }
        }

java
    public void main(SpreadCell cell) {
        Integer dbValue = null;
        //Der Vorgang zum Abrufen des Werts aus der Datenbank entfällt.

        //Sie können es so ersetzen, wie es ist.
        cell.setValue(dbValue);

        //Wenn Sie die if-Anweisung verwenden, initialisieren Sie sie bitte.
        cell.setValue(null);
        if (dbValue != null) {
            cell.setValue(dbValue.intValue());
        }
    }

Zusammenfassung

Sie sollten nicht einfach eine Nullprüfung hinzufügen, ohne darüber nachzudenken, nur weil Sie eine NullReferenceException erhalten. Wenn Sie eine Nullprüfung benötigen, vergessen Sie den Initialisierungscode nicht.

Für diejenigen, die sich mit diesen Hindernissen befassen, mache ich mir Sorgen, dass andere Codes ordnungsgemäß behoben wurden.

Vorheriger Artikel (nutzlose Verarbeitung für die Sammlung)

[Nächster Artikel (Bool Type Handling)] (http://qiita.com/csharpisthebest/items/b0c44764948e1334e94a)

Inhaltsverzeichnis

Recommended Posts

Easy Null Check - Ich möchte Ihnen die Möglichkeit geben, guten Code zu schreiben. 6 [C # Refactoring-Beispiel]
Eine etwas besorgniserregende Codesammlung - ich möchte Ihnen die Möglichkeit geben, guten Code zu schreiben. 2 [C # Refactoring Sample]
Komplizierte bedingte Verzweigung - ich möchte Ihnen die Möglichkeit geben, guten Code zu schreiben. 1 [C # Refactoring-Beispiel]
Bool-Typ-Handling - Ich möchte Ihnen die Möglichkeit geben, guten Code zu schreiben. 7 [C # Refactoring-Beispiel]
Zu viele Funktionsargumente - ich möchte Ihnen die Möglichkeit geben, guten Code zu schreiben. 8 [C # Refactoring-Beispiel]
Verschwenderische Verarbeitung von Sammlungen - ich möchte Ihnen die Möglichkeit geben, guten Code zu schreiben. 5 [C # Refactoring Sample]
Eine flüssige Schnittstelle? -Ich möchte Ihnen die Möglichkeit geben, guten Code zu schreiben. 3 [C # Refactoring Sample]
Ist es möglich, Funktionsaufrufe und bedingte Verzweigungen zu trennen? -Ich möchte eine gute Gelegenheit zum Schreiben von Code geben. 9 [C # Refactoring-Beispiel]
Wie man guten Code schreibt
Schreiben wir einen Code, der einfach zu pflegen ist (Teil 2)
Ich möchte ein schönes build.gradle schreiben
Ich möchte einen Unit Test schreiben!
Ich möchte eine einfache Wiederholung einer Zeichenkette schreiben
Schreiben Sie einfach zu pflegenden Code (Teil 4)
Schreiben Sie einfach zu wartenden Code (Teil 3)
7 Dinge, die du behalten sollst, damit es kein verdammter Code wird