© saicle/Shutterstock.com
Kolumne: Quality Time

Qualität hacken


Mit Hack [1] bringt Facebook eine neue Programmiersprache auf den Markt, die an PHP angelehnt ist. Gleichzeitig bringt Hack viele Features mit, die sich so mancher in PHP schon seit Längerem wünscht. Neben einigem Mehrwehrt an Komfort, zum Beispiel durch automatische Zuweisung von Konstruktorargumenten [2], bietet Hack auch viele Features, die der Softwarequalität zuträglich sein können. Auch wenn ich den produktiven Einsatz von Hack bisher nicht empfehlen kann [3], lohnt ein erster Blick, den ich in dieser Kolumne geben möchte, auf jeden Fall.

Ganz weit vorne sind hier die so genannten Type Annotations [4], die ähnlich wie PHPs Type Hints funktionieren, aber auch skalare Datentypen, Ressourcen, Closures und mehr umfassen. Außerdem erlaubt es Hack, Rückgabewerte von Funktionen sowie Attribute und Konstanten in der Sprache selbst mit Typen zu annotieren. Dies kann zum Beispiel wie in Listing 1 aussehen.

Listing 1

class Product { private string $name; private float $price; public function setName(string $name) : void { $this->name = $name; } public function setPrice(float $price) : void { $this->price = $price; } // ... }

Wer sich jetzt sofort an Java oder andere strikt-typisierte Sprachen erinnert fühlt, hat nicht ganz unrecht: Hack erlaubt es, typsicher PHP-ähnlich zu programmieren. Mit dem feinen, aber doch in der Benutzung gravierenden Unterschied, dass Hack die Typsicherheit nicht aufzwingt. Es ist also weiterhin legitim, Code ohne Typannotationen zu schreiben. Das ermöglicht es dem Entwickler, die Typisierung wohldosiert und bewusst wegzulassen, wenn es Sinn ergibt. Damit formalisiert Hack ziemlich genau das, was viele PHP-Entwickler bereits seit Jahren mithilfe von Dokumentation und expliziten Typchecks leben. Ein weiterer Vorteil ist die Möglichkeit der sanften Migration: Alter PHP-Code und neuer Hack-Code können friedlich in einer Anwendung koexistieren.

Die Formalisierung der Typhinweise birgt allerdings aus Sicht der Codequalität viele Vorteile: In Code, der weitestgehend typannotiert ist, kann eine IDE auf viele Fehler bereits beim Programmieren hinweisen und automatisierte Refactorings funktionieren endlich zuverlässig. Viele IDEs bringen diese Features zwar bereits auf Basis der phpDoc-Blöcke mit; da die aber nicht Bestandteil der Sprache sind, haben entsprechende Features immer einen faden Beigeschmack. Denn nichts ist so schnell Schnee von gestern wie Codedokumentation. HHVM bringt auch gleich eine entsprechende Typinferenz-Engine (hh_serve...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang