Ich denke, dass viele Leute den Null-Check beim Berühren der Entwicklungssprache als störend empfinden. Ich denke, es ist normal, die Existenz von Nullobjekten zu sehen, aber ehrlich gesagt finde ich es umständlich zu wickeln, selbst wenn man sich auto_ptr von C ++ / stl und Optional von Java ansieht. Unter solchen Umständen bin ich sehr glücklich zu versuchen, Null auf Sprachebene wie Kotlin zu eliminieren.
Daher möchte ich überlegen, wie Code geschrieben werden soll, der nicht auf Null stößt. Daher werde ich aufschreiben, was mir vorerst wichtig ist
Der unbeliebteste Teil von null ist
if (null ===
Ich denke, dass der Kontext als ein Kontext beschrieben wird, der nichts mit Geschäftslogik zu tun hat.
Daher denke ich darüber nach, wie schön verschiedene Menschen nur in der Geschäftslogik zusammengefasst werden können.
Versuchen Sie zunächst, allgemeine Null-Vermeidungsmethoden zu sammeln, soweit Sie interessiert sind
*** Es ist nicht erforderlich, eine Nullprüfung wie die if-Anweisung durchzuführen, sodass die Geschäftslogik nicht unangenehm ist *** List/Array/Map Wenn in SQL usw. beim Abrufen des Ergebnisses keine Daten vorhanden sind, kann null zurückgegeben werden. Durch die Verwendung von Liste, Array usw. als Rückgabewert kann die Nullprüfung beseitigt oder die Anzahl der Elemente überprüft werden.
*** Anstelle der Nullprüfung wird eine Ersatzverarbeitung eingefügt, aber der Ersatzwert kann in eine Anweisung eingegeben werden, sodass das Gefühl von Unbehagen in der Geschäftslogik verringert wird. *** std::auto_ptr In C / C ++ kann der Operator Operator verwendet werden, sodass er je nach Anwendung problemlos verwendet werden kann.
int* pint = ptr.get();
```Usw. haben Probleme mit dem Besitz, daher müssen Sie vorsichtig sein, wie Sie sie implementieren.
[Optional](https://docs.oracle.com/javase/jp/8/docs/api/java/util/Optional.html)
Obwohl ich ein Objekt verwenden möchte, fühlt es sich seltsam an, eine Methode aufzurufen, weil sie verpackt ist.
Ich habe gehört, dass es immer nur als Rückgabewert verwendet wird, aber ich finde es umständlich, es als Rückgabewert zu erhalten und neu zuzuweisen.
## *** Reaktives Mono / Flussmittel ***
*** Es ist nicht erforderlich, eine Nullprüfung wie die if-Anweisung durchzuführen, sodass die Geschäftslogik möglicherweise nicht unangenehm ist ***
[mono](http://projectreactor.io/docs/core/release/reference/#mono)
Es heißt "höchstens einen Artikel ausgeben", aber absichtlich wird nur mit 0 .. 1 verpackt.
[flux](http://projectreactor.io/docs/core/release/reference/#flux)
Es sagt "0 bis N Elemente" und repräsentiert absichtlich 0 .. N.
# ** Fälle, in denen keine Nullbedingungen beschrieben werden, wie z. B. NullObject **
## *** Existenz einer Ausnahme und versuchen / fangen ***
In letzter Zeit sind durch die Verwendung von Ausnahme und try / catch Segmentierungsfehler, die durch Nullpunkte verursacht wurden, verschwunden, sodass Sie sich keine Gedanken über Nullobjekte machen müssen.
## *** Wenn es keine Ausnahme gibt ***
Wenn keine Nullprüfung durchgeführt wird, treten häufig Speicherverluste auf, die zu unbeabsichtigtem Verhalten führen können.
Daher ist es erforderlich, nach der Nullprüfung eine entsprechende Fehlerbehandlung durchzuführen.
***null object***
Wenn Sie ein Objekt zurückgeben, führt die Rückgabe eines anderen Typs (null) als object zu einer unbeabsichtigten Verzweigung. Wenn jedoch ein einzelnes Objekt zurückgegeben wird, kann die Logik reibungslos ablaufen.
Da es jedoch erforderlich ist, bei allen Methoden ein Verhalten oder eine Ausnahme zurückzugeben, kann es heutzutage einfacher sein, eine NullPointerException normalerweise unter der Voraussetzung von try / catch auszulösen.
Recommended Posts