scalatutorial.de

Stufe 1Einstieg · Lektion 5 von 34

Konventionen: Namen, Einrückung und Stil

Aktualisiert am 24. September 20263 Min. LesezeitSchritt 5/5 dieser Stufe

Scala lässt Ihnen viele Freiheiten – mit oder ohne Klammern, mit oder ohne Typangaben, Operatoren als Methodennamen. Gerade deshalb lohnt es sich, früh ein paar Konventionen zu kennen, auf die sich die Scala-Welt geeinigt hat.

Namen

Namenskonventionen in Scala: Klassen, Methoden, Pakete, KonstantenclassUpperCamelCaseKundenKonto, HttpClientdef / vallowerCamelCasegesamtPreis, istAktivpackagekleinschreibungde.beispiel.shopKonstanteUpperCamelCaseval MaxVersuche = 3
Die vier Namensregeln, die Sie überall in Scala-Code wiederfinden.

Methoden ohne Parameter und ohne Nebenwirkung werden ohne Klammern definiert und aufgerufen (liste.size), Methoden mit Nebenwirkung mit leeren Klammern (verbindung.close()). So erkennt man schon am Aufruf, ob etwas „passiert“.

Einrückung oder Klammern?

Scala 3 erlaubt beide Stile. Die Einrückungsschreibweise ist inzwischen verbreitet und wird in der offiziellen Dokumentation verwendet:

 Scala 3
def einordnen(punkte: Int): String =
  if punkte >= 90 then "sehr gut"
  else if punkte >= 70 then "gut"
  else "bestanden"

Dasselbe mit Klammern, so wie in Scala 2:

 Scala 3
def einordnen(punkte: Int): String = {
  if (punkte >= 90) "sehr gut"
  else if (punkte >= 70) "gut"
  else "bestanden"
}

Wichtig ist nur, innerhalb eines Projekts bei einem Stil zu bleiben. Eingerückt wird mit zwei Leerzeichen, nicht mit Tabulatoren. Bei langen Blöcken können Sie das Ende mit einer End-Markierung deutlich machen: end einordnen.

Typangaben

Die Typinferenz nimmt Ihnen viel Schreibarbeit ab. Trotzdem gilt als Faustregel:

Unveränderlich als Standard

Schreiben Sie val statt var und unveränderliche Collections statt veränderlicher, solange nichts dagegen spricht. Eine var ist kein Fehler, aber ein Signal an Leser: Hier ändert sich etwas, pass auf. Die Lektion über Variablen geht darauf genauer ein.

Dateien und Pakete

 Scala 3
package de.beispiel.shop

import scala.util.{Try, Success, Failure}
import java.time.LocalDate

final case class Bestellung(nummer: Long, datum: LocalDate)

Operatoren sparsam einsetzen

Weil Methodennamen aus Sonderzeichen bestehen dürfen, können Sie eigene Operatoren definieren. Das ist praktisch bei mathematischen Typen (vektor + vektor), wird aber schnell unlesbar, wenn |+| oder ~> in Geschäftslogik auftauchen. Faustregel: Ein Operator nur dort, wo seine Bedeutung jedem Leser sofort klar ist. Wie Operatoren als Methoden funktionieren, zeigt die Lektion über Funktionen und Methoden.

Automatisch formatieren mit scalafmt

Statt Stilfragen im Team zu diskutieren, überlassen viele Projekte das Formatieren dem Werkzeug scalafmt. Eine Datei .scalafmt.conf im Projektordner legt die Regeln fest:

.scalafmt.confAusgabe
version = "3.8.3"
runner.dialect = scala3
maxColumn = 100

Anschließend formatiert scala fmt alle Dateien, in sbt erledigt das scalafmtAll (mit dem sbt-scalafmt-Plugin). Metals und IntelliJ können beim Speichern automatisch formatieren. Die version sollte zu der Version passen, die Ihre Werkzeuge verwenden.

Passt dazu