Buchclub: Java by Comparison – Anwendungsentwickler-Podcast #130

Buchclub: Java by Comparison – Anwendungsentwickler-Podcast #130

Ich habe ein neues Lieblingsbuch für die Ausbildung! „Java by Comparison“ wird im Buchclub in der einhundertdreißigsten Episode des Anwendungsentwickler-Podcasts besprochen. Inhalt Ich habe das Buch an einem Wochenende komplett verschlungen und es dire...
27 Minuten

Beschreibung

vor 7 Jahren

Ich habe ein neues Lieblingsbuch für die Ausbildung! „Java by
Comparison“ wird im Buchclub in der einhundertdreißigsten Episode
des Anwendungsentwickler-Podcasts besprochen.
Inhalt

Ich habe das Buch an einem Wochenende komplett verschlungen und
es direkt im Anschluss auf die ToRead-Liste meiner Azubis
gesetzt. Ab sofort werde ich es mit jedem Azubi lesen. Direkt im
1. Ausbildungsjahr, kurz nach der Bearbeitung der ersten
Java-Aufgaben, legen wir los.
Idee des Buchs

Die Idee des Buchs ist schnell erklärt: Es werden 70
Code-Beispiele in Java gezeigt, an denen jeweils einzelne
Optimierungen durchgeführt werden. Der „schlechte“ Code steht auf
der linken Seite und der „gute“ Code steht auf der rechten Seite.
Somit kann man direkt die beiden Beispiele vergleichen und sich
auf den jeweiligen Unterschied konzentrieren. Im Prinzip gibt es
also 70 kurze Lektionen zum Thema „Clean Code“.


Die Beispiele sind interessant und teilweise auch ein bisschen
witzig gewählt, da das Grundthema eine Reise zum Mars ist.
Zielgruppe

Die Zielgruppe des Buches sind Anfänger bis Fortgeschrittene in
der Programmierung. Die Beispiele sind zwar komplett in Java,
aber ich würde sagen, dass man sie genauso gut in anderen
Sprachen anwenden kann. Einige Beispiele, wie z.B. die Verwendung
von Optional, sind zwar sehr spezifisch für Java, aber
die grundlegenden Ideen (in diesem Fall null zu vermeiden) lassen
sich ohne Probleme auf andere Sprachen übertragen.


Damit man die Beispiele und Optimierungen auch versteht, sollte
man schon ein wenig Programmierererfahrung mitbringen. In meinem
Fall lasse ich die Azubis das Buch direkt nach ihrer Einführung
in Java lesen. Die grundlegenden Themen wie Objektorientierung,
Vererbung, Interfaces und Teile der funktionalen Programmierung
sind dann schon bekannt und die weiteren Optimierungen des Buches
können verstanden und auch angewendet werden. Das Buch schlägt
vor, das „FizzBuzz“-Problem zu lösen. Wenn das klappt, gehört man
zur Zielgruppe! Hier habe ich das Problem übrigens selbst
schonmal auseinandergenommen: Don’t Repeat Yourself (DRY).


Für mich als Ausbilder ist das Buch ebenfalls sehr interessant,
da ich Erklärungen zu Anmerkungen in meinen Code Reviews nun
nicht mehr jedesmal ausformulieren und erklären muss, sondern im
Prinzip einfach auf das kurze Buchkapitel dazu verweisen kann.
Bei meinen Erklärungen schweife ich nämlich gerne auch mal sehr
weit ab und am Ende haben wir dann eine halbe Stunde über Themen
diskutiert, die mit dem eigentlichen Problem gar nichts mehr zu
tun haben. Hier hilft mir das Buch weiter, da jedes Kapitel sich
auf ein einziges Problem fokussiert und es in zwei Seiten gut
nachvollziehbar erklärt.
Inhalt des Buches

Die einzelnen Kapitel des Buches bauen ein wenig aufeinander auf.
Es startet mit einfachen Beispielen und wird immer komplexer.
Wobei auch die späteren Beispiele immer noch gut verständlich
sind. Es geht los mit einfachen Möglichkeiten, den eigenen Code
aufzuräumen (z.B. die unten genannten unnötigen Vergleiche).
Danach folgen etwas weitergehende Möglichkeiten wie z.B.
Enhanced-For-Schleifen statt For-Schleifen einzusetzen. Es gibt
ein eigenes Kapitel zum Thema Kommentare und auch zur Benennung
von Variablen oder Methoden. Einiges davon wird auch in Clean
Code* schon erklärt, aber hier werden halt aussagekräftige, kurze
Beispiele mitgeliefert, mit denen auch Einsteiger etwas anfangen
können.


Es gibt des Weiteren ein eigenes Kapitel zur Fehlerbehandlung und
insbesondere auch zum Thema Unit-Tests, was ich sehr begrüße.
Denn meiner Erfahrung nach haben gerade beim Thema Tests meine
Azubis und Studierenden die meisten Probleme. Am Ende des Buches
gibt es dann noch ein wenig über das Design von Klassenstrukturen
zu lesen und eine kurze Einführung in die funktionale
Programmierung mit Java, also beispielsweise Streams und
Lambda-Ausdrücke. Auch Methodenreferenzen werden erläutert. Zum
Abschluss gibt es dann einen Ausblick auf das „echte Leben“. Hier
geht es dann z.B. um Continuous Integration oder den Einsatz
eines Logging-Frameworks, anstatt alles auf die Konsole zu
schreiben.
Konkrete Beispiele

Um ein Gefühl für den Inhalt zu vermittelt, beschreibe ich
einfach mal drei Beispiele aus dem Buch.
Unnötige Vergleiche

Gleich das allererste ist eines, dass mir in der Praxis bei
meinen Azubis und Studierenden immer wieder unterkommt: der
Vergleich mit booleschen Werten. Es ist völlig unnötig, bei einer
Abfrage einen booleschen Wert mit true oder false zu vergleichen.
Stattdessen kann dieser direkt in der Abfrage verwendet werden.


Nicht so gut:


if (istErwachsen == true) { rabatt = 0; }


Besser:


if (istErwachsen) { rabatt = 0; }
Domänensprache nutzen

Ein weiteres schönes Beispiel ist die Verwendung von
Domänen-Terminologie. Wir schreiben Code für andere Menschen und
nicht für den Computer! Daher ist es wichtig, dass fachlich
versierte Leser unseres Codes ihn gut verstehen und nicht durch
missverständliche Begriffe abgelenkt werden.


Nicht so gut:


b = (summeR / lookupTabelleKS) * ax;


Besser:


monatsbeitrag = (rueckstellungen / kopfschaden) * rentenbarwart;
Optionals als Stream verwenden

Das letzte Beispiel ist sehr spezifisch für Java. Hier geht es um
das schon erwähnte Optional. Anstatt die Methode
isPresent() zu verwenden, sollte man den funktionalen Ansatz
wählen und das Objekt so nutzen, wie es gedacht ist.


Nicht so gut:


if (optional.isPresent() { doSomething(optional.get()); }


Besser:


optional.ifPresent(this::doSomething);
Literaturempfehlungen

Logisch, oder?


*
Links

Permalink zu dieser Podcast-Episode

RSS-Feed des Podcasts

Website zum Buch: Become a Better Java Developer in 70
Examples

Podcast-Interview Simon Harrer: Java by Comparison.
Vorher/Nachher-Vergleiche zu Clean Code in Java

Reviews des Buchs: Java by Comparison bei heise Developer,
Java by Comparison bei InfoQ

Kommentare (0)

Lade Inhalte...

Abonnenten

15
15