Effective Java - Best Practices für die Java-Plattform

Effective Java - Best Practices für die Java-Plattform

 

 

 

von: Joshua Bloch

dpunkt, 2018

ISBN: 9783960886389

Sprache: Deutsch

410 Seiten, Download: 2903 KB

 
Format:  PDF, auch als Online-Lesen

geeignet für: Apple iPad, Android Tablet PC's Online-Lesen PC, MAC, Laptop
Typ: A (einfacher Zugriff)

 

eBook anfordern

Mehr zum Inhalt

Effective Java - Best Practices für die Java-Plattform



  Effective Java 3  
  Impressum 4  
  Inhaltsverzeichnis 5  
  Vorbemerkung 11  
  Vorwort 13  
  Danksagung 14  
  Kapitel 1 - Einleitung 15  
  Kapitel 2 - Objekte erzeugen und auflösen 19  
     2.1 Thema 1: Statische Factory-Methoden als Alternative zu Konstruktoren 19  
     2.2 Thema 2: Erwägen Sie bei zu vielen Konstruktorparametern den Einsatz eines Builders 24  
     2.3 Thema 3: Erzwingen Sie die Singleton-Eigenschaft mit einem private-Konstruktor oder einem Aufzählungstyp 32  
     2.4 Thema 4: Erzwingen Sie die Nicht-Instanziierbarkeit mit einem private-Konstruktor 34  
     2.5 Thema 5: Arbeiten Sie mit Dependency Injection statt Ressourcen direkt einzubinden 35  
     2.6 Thema 6: Vermeiden Sie die Erzeugung unnötiger Objekte 37  
     2.7 Thema 7: Löschen Sie veraltete Objektreferenzen 41  
     2.8 Thema 8: Vermeiden Sie Finalizer und Cleaner 44  
     2.9 Thema 9: Verwenden Sie try-with-resources anstelle von try-finally 49  
  Kapitel 3 - Methoden, die allen Objekten gemeinsam sind 53  
     3.1 Thema 10: Halten Sie beim Überschreiben von equals den allgemeinen Vertrag ein 53  
     3.2 Thema 11: Überschreiben Sie, wenn Sie equals überschreiben, immer auch hashCode 66  
     3.3 Thema 12: Überschreiben Sie immer toString 71  
     3.4 Thema 13: Vorsicht beim Überschreiben von clone 74  
     3.5 Thema 14: Denken Sie darüber nach, Comparable zu implementieren 83  
  Kapitel 4 - Klassen und Schnittstellen 91  
     4.1 Thema 15: Minimieren Sie den Zugriff auf Klassen und Member 91  
     4.2 Thema 16: Verwenden Sie in öffentlichen Klassen Accessor- Methoden und keine öffentlichen Felder 96  
     4.3 Thema 17: Bevorzugen Sie unveränderliche Klassen 98  
     4.4 Thema 18: Ziehen Sie Komposition der Vererbung vor 106  
     4.5 Thema 19: Entwerfen und dokumentieren Sie für Vererbung oder verbieten Sie sie 112  
     4.6 Thema 20: Geben Sie Schnittstellen den Vorzug vor abstrakten Klassen 118  
     4.7 Thema 21: Entwerfen Sie Ihre Schnittstellen für die Nachwelt 123  
     4.8 Thema 22: Verwenden Sie Schnittstellen nur zum Definieren von Typen 126  
     4.9 Thema 23: Arbeiten Sie mit Klassenhierarchien statt mit Tag-Klassen 128  
     4.10 Thema 24: Ziehen Sie statische Member-Klassen den nicht-statischen vor 131  
     4.11 Thema 25: Beschränken Sie Quelltextdateien auf eine einzige Toplevel-Klasse 135  
  Kapitel 5 - Java Generics 137  
     5.1 Thema 26: Hände weg von Rohtypen 137  
     5.2 Thema 27: Eliminieren Sie unchecked-Warnungen 143  
     5.3 Thema 28: Verwenden Sie Listen statt Arrays 145  
     5.4 Thema 29: Bevorzugen Sie generische Typen 150  
     5.5 Thema 30: Bevorzugen Sie generische Methoden 155  
     5.6 Thema 31: Eingeschränkte Wildcard-Typen machen Ihre APIs flexibler 159  
     5.7 Thema 32: Vorsicht beim Kombinieren von Java Generics mit varargs-Methoden 166  
     5.8 Thema 33: Nutzen Sie typsichere heterogene Container 171  
  Kapitel 6 - Aufzählungen und Annotationen 177  
     6.1 Thema 34: Verwenden Sie Aufzählungen statt int- Konstanten 177  
     6.2 Thema 35: Verwenden Sie Instanzfelder statt Ordinalzahlen 188  
     6.3 Thema 36: Verwenden Sie EnumSet statt Bitfelder 189  
     6.4 Thema 37: Verwenden Sie EnumMap statt Ordinalzahlindizierung 191  
     6.5 Thema 38: Emulieren Sie erweiterbare Enums mit Schnittstellen 196  
     6.6 Thema 39: Ziehen Sie die Annotationen den Namensmustern vor 200  
     6.7 Thema 40: Verwenden Sie konsequent die Annotation Override 208  
     6.8 Thema 41: Definieren Sie Typen mit Markierungsschnittstellen 211  
  Kapitel 7 - Lambdas und Streams 215  
     7.1 Thema 42: Lambdas sind oft besser als anonyme Klassen 215  
     7.2 Thema 43: Denken Sie an Methodenreferenzen als Alternative zu Lambdas 219  
     7.3 Thema 44: Verwenden Sie nach Möglichkeit die funktionalen Schnittstellen aus dem Standard 221  
     7.4 Thema 45: Setzen Sie Streams mit Bedacht ein 226  
     7.5 Thema 46: Bevorzugen Sie in Streams Funktionen ohne Nebeneffekte 234  
     7.6 Thema 47: Verwenden Sie als Rückgabewert eher Collection als Stream 240  
     7.7 Thema 48: Seien Sie vorsichtig, wenn Sie Streams parallelisieren 246  
  Kapitel 8 - Methoden 251  
     8.1 Thema 49: Prüfen Sie Parameter auf Gültigkeit 251  
     8.2 Thema 50: Erstellen Sie bei Bedarf defensive Kopien 254  
     8.3 Thema 51: Entwerfen Sie Methodensignaturen sorgfältig 259  
     8.4 Thema 52: Verwenden Sie Überladung mit Bedacht 261  
     8.5 Thema 53: Verwenden Sie varargs mit Bedacht 268  
     8.6 Thema 54: Geben Sie nicht null, sondern leere Sammlungen oder Arrays zurück 270  
     8.7 Thema 55: Verwenden Sie den Rückgabetyp Optional mit Bedacht 272  
     8.8 Thema 56: Schreiben Sie Doc-Kommentare für alle offengelegten API-Elemente 277  
  Kapitel 9 - Allgemeine Programmierung 285  
     9.1 Thema 57: Minimieren Sie den Gültigkeitsbereich lokaler Variablen 285  
     9.2 Thema 58: Ziehen Sie for-each-Schleifen den traditionellen for-Schleifen vor 288  
     9.3 Thema 59: Machen Sie sich mit den Bibliotheken vertraut und nutzen Sie sie 291  
     9.4 Thema 60: Vermeiden Sie float und double, wenn genaue Antworten benötigt werden 294  
     9.5 Thema 61: Ziehen Sie die elementaren Datentypen den Wrapper-Typen vor 297  
     9.6 Thema 62: Vermeiden Sie Strings, wenn andere Typen besser geeignet sind 300  
     9.7 Thema 63: Denken Sie an die Leistungseinbußen bei der String-Verkettung 303  
     9.8 Thema 64: Referenzieren Sie Objekte über ihre Schnittstellen 304  
     9.9 Thema 65: Ziehen Sie Schnittstellen der Java Reflection vor 306  
     9.10 Thema 66: Vorsicht bei der Arbeit mit nativen Methoden 309  
     9.11 Thema 67: Optimieren Sie mit Bedacht 310  
     9.12 Thema 68: Halten Sie sich an die allgemein anerkannten Namenskonventionen 314  
  Kapitel 10 - Ausnahmen 319  
     10.1 Thema 69: Verwenden Sie Ausnahmen nur für Ausnahmebedingungen 319  
     10.2 Thema 70: Verwenden Sie geprüfte Ausnahmen für behebbare Situationen und Laufzeitausnahmen für Programmierfehler 322  
     10.3 Thema 71: Vermeiden Sie den unnötigen Einsatz von geprüften Ausnahmen 324  
     10.4 Thema 72: Ziehen Sie Standardausnahmen vor 326  
     10.5 Thema 73: Werfen Sie Ausnahmen passend zur Abstraktion 328  
     10.6 Thema 74: Dokumentieren Sie alle Ausnahmen, die jede Methode auslöst 331  
     10.7 Thema 75: Geben Sie in Detailnachrichten Fehlerinformationen an 332  
     10.8 Thema 76: Streben Sie nach Fehleratomizität 334  
     10.9 Thema 77: Ignorieren Sie Ausnahmen nicht 336  
  Kapitel 11 - Nebenläufigkeit 339  
     11.1 Thema 78: Synchronisieren Sie den Zugriff auf gemeinsam genutzte, veränderliche Daten 339  
     11.2 Thema 79: Vermeiden Sie übermäßige Synchronisation 344  
     11.3 Thema 80: Ziehen Sie Exekutoren, Aufgaben und Streams den Threads vor 351  
     11.4 Thema 81: Ziehen Sie die Nebenläufigkeitsdienste den Methoden wait und notify vor 353  
     11.5 Thema 82: Dokumentieren Sie die Thread-Sicherheit 358  
     11.6 Thema 83: Verwenden Sie die späte Initialisierung mit Bedacht 361  
     11.7 Thema 84: Verlassen Sie sich nicht auf den Thread-Planer 365  
  Kapitel 12 - Serialisierung 367  
     12.1 Thema 85: Verwenden Sie statt der Java-Serialisierung besser deren Alternativen 367  
     12.2 Thema 86: Implementieren Sie Serializable mit großer Vorsicht 371  
     12.3 Thema 87: Verwenden Sie möglichst eine eigene serialisierte Form 375  
     12.4 Thema 88: Implementieren Sie readObject defensiv 381  
     12.5 Thema 89: Ziehen Sie zur Instanzenkontrolle die Aufzählungstypen der Methode readResolve vor 387  
     12.6 Thema 90: Verwenden Sie möglichst Serialisierungs-Proxys anstelle von serialisierten Instanzen 391  
  Index 395  
  Literatur 407  

Kategorien

Service

Info/Kontakt

  Info
Hier gelangen Sie wieder zum Online-Auftritt Ihrer Bibliothek