Dienstag, 16. November 2010

Tag 2: 13:00 - 13:15: Programming in pain

In diesem 15 Minuten dauernden Quickie ging es nicht um eine neue Programmiersprache namens "pain". Vielmehr lautete der Untertitel sinngemäß: "Wie das Programmieren mit Scala meinen Blick auf die Programmierung mit Java veränderte".

Der Vortragende ging dabei auf folgende Scala-Features ein, welche den Umgang mit der Sprache sehr elegant machen:
  • Named arguments: In Scala kann man einer Methode/einem Konstruktor Parameter unter Angabe des zugehörigen Parameternamens übergeben. Dies ist in Java nicht möglich. Baut man hingegen seine Java-Klassen in Form einer DSL, in der Methoden den Parameternamen entsprechen, kann man das Scala-Feature einigermaßen elegant nachbilden und einen deutlich sprechenderen und fehlerfreieren Code erhalten.
  • Variables and Values: Scala kennt Variablen-Deklarationen mit "var" und "val", wobei letztere dem "final" in Java entsprechen. Der Vortragende rät dazu, wesentlich gezielter "final" einzusetzen.
  • Normally immutable: In Scala sind defaultmäßig alle Objekte unveränderlich. In Java gilt dies nur zum geringen Teil (z. B. String) und besonders bei Collections garnicht. Daher der Rat für eigene Klassen (wo umsetzbar): Nach Möglichkeit auf setter verzichten (!) und in getter-Methoden Kopien der Objektdaten zurückgeben. Dies verhindert "programming by side-effect".
  • Small classes: Scala gehört wohl zu denjenigen Sprachen mit der kompaktesten Möglichkeit Klassen zu beschreiben. Hier gibt es unter Java keinen Gegenentwurf.
  • Collections: Scala hat Collections im Angebot, die leicht zu initialisieren und durch nette Hilfsmethoden einfach zu verarbeiten sind. Java kennt zur Initialisierung allenfalls Array.asList(...). Hier können die Bibliotheken von Google Guava hilfreich sein.
  • Object composition: Zu Scalas Traits hat Java definitiv keinen Gegenentwurf.
  • Advanced switches: Scala erlaubt in Switch-Case-Anweisungen den Vergleich mit beliebigen Objekt-Typen. In Java undenkbar. Der Vortragende hat aber eine interessante DSL vorgestellt, mit der man das nachbilden könnte.
Insgesamt ein interessanter Vortrag, der einem noch mal die Augen öffnete hin zu einem noch sichereren, noch lesbareren, noch fehlerfreieren Code.

Keine Kommentare:

Kommentar veröffentlichen