Effektive Java 3rd Edition Kapitel 8 Methoden
[Effective Java 3rd Edition](https://www.amazon.co.jp/Effective-Java-%E7%AC%AC3%E7%89%88-%E3%], ein Muss für fortgeschrittene Java-Benutzer und höher. 82% B8% E3% 83% A7% E3% 82% B7% E3% 83% A5% E3% 82% A2% E3% 83% BB% E3% 83% 96% E3% 83% AD% E3% 83% 83% E3% 82% AF-ebook / dp / B07RHX1K53) hat eine Kindle-Version, daher werde ich sie zusammenfassen.
Zurück: Effektive Java 3rd Edition, Kapitel 7, Lambda und Stream
Weiter: Effektives Java 3rd Edition Kapitel 9 Allgemeines Programm
Punkt 49 Überprüfen Sie die Gültigkeit der Parameter
- Verwenden Sie für öffentliche und geschützte Methoden das Javadoc-Tag "@ throw", um Ausnahmen zu dokumentieren, die ausgelöst werden, wenn die Parameterwertbeschränkungen nicht eingehalten werden. Im Allgemeinen sind die Ausnahmen "IllegalArgumentException", "IndexOutOfBoundsException", "NullPointerException".
- Die in Java7 hinzugefügte Methode "Objects.requireNonNull" ist flexibel und praktisch, sodass Sie nicht manuell nach Nullen suchen müssen.
//Löst eine NullPointerException aus, wenn die Strategie null ist
this.strategy = Objects.requireNonNull(strategy, "strategy must not be null.")
- In Java 9 wurde
java.util.Objects
ein Mechanismus zur Bereichsüberprüfung hinzugefügt. Es besteht aus drei Methoden: "checkFromIndexSize", "checkFromToIndex" und "checkIndex" und prüft, ob der Index der Liste und des Arrays innerhalb des Bereichs liegt.
- Nicht öffentliche Methoden sollten Zusicherungen verwenden, um Parameter zu überprüfen.
Punkt 50 Defensive Kopie, falls erforderlich
- Wenn ein variables Objekt wie die Date-Klasse als Parameter eingeht, ist es wichtig, es defensiv zu kopieren.
Punkt 51 Entwerfen Sie die Signatur der Methode sorgfältig
--Wählen Sie den Methodennamen sorgfältig aus. Vermeiden Sie lange Methodennamen.
- Geben Sie nicht zu viele nützliche Methoden an. Einzelne Methoden sollten "ihre eigene Rolle spielen", und viele Methoden erschweren das Testen und die Wartung.
- Vermeiden Sie eine lange Liste von Parametern. Streben Sie 4 oder weniger an. Es ist schädlich, mehrere Parameter desselben Typs zu haben. Es gibt drei Techniken, um die Liste der zu langen Parameter zu verkürzen:
- Teilen Sie die Methoden so auf, dass für jede Methode nur eine Teilmenge der Parameter erforderlich ist.
--Erstellen Sie eine Hilfsklasse, die eine Sammlung von Parametern enthält.
- Wenden Sie das Builder-Muster von der Objekterstellung bis zum Methodenaufruf an.
--Wählen Sie für den Parametertyp die Schnittstelle und nicht die Klasse aus. Wenn eine geeignete Schnittstelle zum Definieren der Parameter vorhanden ist, verwenden Sie diese Schnittstelle anstelle der Klasse, die sie implementiert. (Beispiel: HashMap → Map)
--Wenn die Bedeutung von Boolean nicht aus dem Methodennamen hervorgeht, verwenden Sie den Aufzählungstyp mit zwei Elementen anstelle von Boolean.
Punkt 52 Vorsichtig mit Überlastung verwenden
- Bei Überlastung wird zur Kompilierungszeit ausgewählt, welche Methode aufgerufen wird. In einer "Collection" -Instanz kann "ArrayList" die Argumentmethode nicht gut aufrufen, wenn der Inhalt "ArrayList" ist.
- Eine sichere und konservative Richtlinie bietet nicht zwei überladene Methoden mit der gleichen Anzahl von Parametern. Geben Sie der Methode einen anderen Namen, anstatt sie zu überladen.
Punkt 53: Verwenden Sie Argumente mit variabler Länge mit Vorsicht
- Das Problem ist, dass die Argumentmethode mit variabler Länge nur zur Laufzeit überprüft werden kann, wenn ein oder mehrere Argumente erforderlich sind.
- Platzieren Sie ein Argument mit variabler Länge nach den erforderlichen Parametern.
Element 54 Gibt eine leere Sammlung oder ein leeres Array anstelle von null zurück
- Geben Sie nicht null anstelle einer leeren Sammlung oder eines leeren Arrays zurück.
- Wenn null, ist es schwierig, die API zu verwenden, und es gibt keinen Leistungsvorteil.
Punkt 55: Optional vorsichtig zurücksenden
- Es gibt drei Möglichkeiten, Objekte ohne Wert darzustellen.
--null (Gefahr einer NullPointerException)
- Ausnahme (hohe Kosten)
- Optional (von java8)
- Leer mit
Optional.empty ()
. Optional, der Wert in Optional.of (Wert)
enthält.
--Optional.ofNullable (value)
bestimmt und gibt eine der oben genannten Optionen zurück, je nachdem, ob der Wert null ist oder nicht.
--Methoden, die Optional zurückgeben, dürfen nicht null zurückgeben.
- Das Zurückgeben einer Option, die einen Basisdatentyp mit Box enthält, ist teuer, da Sie zwei Boxebenen ausführen. Zu diesem Zweck werden die Basisdatentypen "OptionalInt", "OptionalLong" und "OptionalDouble" vorbereitet.
- Es sollte selten sein, eine andere Option als den Rückgabewert zu verwenden.
Punkt 56 Schreiben Sie Dokumentkommentare für alle öffentlichen API-Elemente
- Dokumentkommentare müssen vor allen veröffentlichten Klassen, Schnittstellen, Konstruktoren, Methoden und Felddeklarationen geschrieben werden.
- Dokumentkommentare zu Methoden sollten den Vertrag zwischen der Methode und ihren Kunden kurz beschreiben.
--Listen Sie alle Voraussetzungen, Nachbedingungen und Nebenwirkungen der Methode auf.
- Die Tags "@ param", "@ return" und "@ throw" sollten geschrieben werden.
--Dokumentkommentare werden in HTML konvertiert, sodass Sie HTML-Tags verwenden können.
- Beim Entwerfen einer Klasse für die Vererbung muss das Selbstverwendungsmuster dokumentiert werden. Verwenden Sie dazu
@ implSpec
.
-HTML-Metazeichen (<``>``&
Usw.) bei Verwendung@literal
In Tags einschließen. Beispiel){@literal |r| < 1}