Schöner Coden – Teil 3

Experten-Check: Was ist “schöner Code” für Mobile- und UI-Experten?

Redaktion JAXenter

© Shutterstock.com / patpitchaya

In unserem dritten Experten-Check zum Thema „Schöner Coden“ stehen uns die beiden Entwickler Thorsten Maier und Dominik Obermaier Rede und Antwort. Was ist für sie schöner Code? Und was auf gar keinen Fall? Welche Eigenschaften sind für sie besonders wichtig? Außerdem plaudern die Experten aus dem Nähkästchen und verraten, was sie selbst auf die harte Tour lernen mussten.

Die Mobile- und UI-Experten

thorsten_maier_124

Thorsten Maier arbeitet bei OIO Orientation in Objects. Er erschließt kontinuierlich bessere Wege, Software zu entwickeln, indem er selbst als Software-Entwickler unterwegs ist und anderen als Berater, Trainer, Autor und Speaker dabei hilft.

Dominik Obermaier

Dominik Obermaier ist Geschäftsführer bei der dc-square GmbH, die hochskalierbare IoT-Lösungen, wie den MQTT-Broker HiveMQ, entwickelt. Dominik berät Unternehmen im Bereich MQTT, Messaging und IoT. Er entwickelte MQTT 3.1.1 bei OASIS mit und ist regelmäßiger Autor und Speaker auf Konferenzen.

Was hilft dir (technisch) beim schöner Coden? Welche Tools/Frameworks machen Code schön?

Thorsten Maier: JavaScript ist heutzutage in den meisten Anwendungen kaum noch wegzudenken. Viele Java-Entwickler tun sich allerdings immer noch schwer damit JavaScript-Code vernünftig zu strukturieren. Das führt in der Praxis häufig zu unlesbarem und somit schwer wartbarem Code. Gute Erfahrungen haben wir mit dem Einsatz von TypeScript gemacht, da mit der damit verbundenen Typisierung und der Möglichkeit zur Erstellung von Klassen, deutlich schönerer Code entsteht. Wer ganz auf JavaScript verzichtet möchte, bekommt mit GWT einen vielfach in der Praxis erprobten Java-zu- JavaScript-Compiler, der den Einsatz des bekannten Java-Toolings und der dort vorhandenen Strukturierungsmöglichkeiten erlaubt.

Schöner Code ist Code, der sich gut lesen lässt. Da Code ja bekanntlich sehr viel häufiger gelesen als geschrieben wird. Neben der bereits erwähnten Strukturierung des Codes kann auch die eingesetzte Schriftart helfen, die Lesbarkeit zu erhöhen. Ich setze daher die Schriftart Fira Code ein, die mit zahlreichen Ligaturen für häufige Progammierkonstrukte punkten kann.

Dominik Obermaier: Ganz klar eine vernünftige IDE. Im konkreten Fall IntellIJ Idea Ultimate.

Bei welchem Fehler rollen sich bei dir die Fußnägel hoch? Was ist schlechter Code?

Thorsten Maier: Für guten Code lässt sich ein einfacher Test schreiben. Ist dies nicht möglich, liegt es in der Regel an mehreren Punkte, bei denen sich mir die Fußnägel hoch rollen: Zu lange Methoden mit zu vielen Abhängigkeiten. Es gibt zu viele oder zu komplexe Methodenparameter, die nicht ohne Weiteres erzeugt werden können. Oder ein globaler Zustand in Form von statischen Variablen oder magischen Kontextobjekten, die einen Teil des Zustands der Anwendung kapseln.

Dominik Obermaier: Wenn eine API nicht sauber designed wurde und nicht intuitiv ist, dann leidet der Spaß schon sehr darunter – und diese APIs sind üblicherweise auch sehr fehleranfällig. Noch schlimmer finde ich jedoch wenn die Framework-itis ausbricht, also für alles ein Framework verwendet wird. Ich finde daher auch den übermäßigen Gebrauch von Annotations wie bei Spring Boot schrecklich. Ich bin ein großer Fan von einer No Magic Policy. Wenn also irgendetwas im Code passiert, das nicht unmittelbar ersichtlich ist oder implizit passiert, empfinde ich das als sehr unschön. Dazu gehört in den meisten Fällen für mich auch Classpath Scanning. Als Alternative zu Spring Boot finde ich übrigens Dropwizard sehr elegant, da hier nur Klebercode abgenommen wird und nicht zu viel unter der Haube passiert.

Wenn du eine Eigenschaft nennen müsstest, die für dich schönen Code ausmacht, welche wäre das und warum?

Thorsten Maier: Jede Methode sollte nur Anweisungen auf einer einzigen Abstraktionsebene enthalten. Im folgenden Code-Beispiel wird ein Server gestartet und anschließend per HTTP-Request ein Log-in durchgeführt. Dabei werden allerdings die beiden Aktionen Start Server und Login auf unterschiedlichen Abstraktionsebenen formuliert:

public void startServerAndLogin() {
        startServer();
        // Login
        try {
                  URL url = new URL("...");
                  URLConnection urlc = url.openConnection();
                  // ...
        } catch (Exception e) {
                  // ...
        }
}

Wesentlich schöner wird der Code durch ein einfaches Refactoring, bei dem der Log-in-Code in eine separate Methode ausgelagert wird. Die beiden Anweisungen in der Methode startServerAndLogin befinden sich nun auf der gleichen Abstraktionsebene:

public void startServerAndLogin() {
        startServer();
        login();
}

private void login() {
        try {
                URL url = new URL("...");
                URLConnection urlc = url.openConnection();
                // ...
       } catch (Exception e) {
                // ...
       }
}

Dominik Obermaier: Neben sauberer und konsistenter Formatierung sollte der Code natürlich gut strukturiert sein. Speziell wenn es um nebenläufigen Code geht, habe ich auf die harte Tour gelernt, dass Immutable Objects einem das Leben sehr leicht machen. Mittlerweile verwende ich auch bei single-threaded Code sehr of Immutable Objects und Collections (z. B. von Guava) und empfinde diese als wesentlich eleganter und weniger fehleranfällig als die Standard-Java-Collections. Eine weitere Eigenschaft von gutem Code ist meiner Meinung nach, dass Input Parameter – zumindest bei public Methoden – validiert werden um Fail-fast-Charakteristiken zu erreichen. Konkret verwende ich hier gerne die Guava Preconditions.

shutterstock_107815670Schöner Coden
In unserer Reihe zum Thema „Schöner Coden“ stellen wir Experten verschiedener Disziplinen die Frage: Was ist eigentlich schöner Code? Welche Eigenschaft hat schöner Code aus der Sicht eines Software-Architekten? Und wie blicken Tester auf dieses Thema? Hier finden Sie eine Übersicht der bisher veröffentlichten Experten-Checks:

Geschrieben von
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: