Scala Language
Best Practices
Suche…
Bemerkungen
Bevorzugen Sie Werte, unveränderliche Objekte und Methoden ohne Nebenwirkungen. Erstmal nach ihnen greifen. Verwenden Sie Variablen, veränderliche Objekte und Methoden mit Nebenwirkungen, wenn Sie einen bestimmten Bedarf und eine entsprechende Begründung haben.
- Programmierung in Scala von Odersky, Spoon und Venners
Es gibt weitere Beispiele und Richtlinien in dieser Präsentation von Odersky.
Halte es einfach
Machen Sie einfache Aufgaben nicht zu kompliziert. Meistens benötigen Sie nur:
- algebraische Datentypen
- strukturelle Rekursion
-
flatMapapi (map,flatMap,fold)
Es gibt viele komplizierte Dinge in Scala, wie zum Beispiel:
-
Cake patternoderReader Monadfür Abhängigkeitsinjektion. - Beliebige Werte als
implicitArgumente übergeben.
Diese Dinge sind für Neuankömmlinge nicht klar: Vermeiden Sie die Verwendung, bevor Sie sie verstehen. Die Verwendung fortschrittlicher Konzepte ohne wirkliche Notwendigkeit verschleiert den Code und macht ihn weniger wartbar.
Packen Sie nicht zu viel in einen Ausdruck.
- Finden Sie aussagekräftige Namen für Berechnungseinheiten.
- Verwenden Sie
forComprehensions odermapBerechnungen miteinander zu kombinieren.
Nehmen wir an, Sie haben so etwas:
if (userAuthorized.nonEmtpy) {
makeRequest().map {
case Success(respone) =>
someProcessing(..)
if (resendToUser) {
sendToUser(...)
}
...
}
}
Wenn alle Funktionen zurückkehren Either oder eine andere Validation -ähnlichen Art, können Sie schreiben:
for {
user <- authorizeUser
response <- requestToThirdParty(user)
_ <- someProcessing(...)
} {
sendToUser
}
Ziehe einen funktionalen Stil vor
Standardmäßig:
- Verwenden Sie möglichst nicht
val, sondernvar. Auf diese Weise können Sie eine Reihe funktionaler Hilfsprogramme, einschließlich der Arbeitsverteilung, nahtlos nutzen. - Verwenden Sie
recursionundcomprehensions, nicht Schleifen. - Verwenden Sie unveränderliche Sammlungen. Dies ist eine Korrelation zur Verwendung von
valwann immer dies möglich ist. - Konzentrieren Sie sich auf Datentransformationen, CQRS-Logik und nicht auf CRUD.
Es gibt gute Gründe, sich für einen nicht funktionalen Stil zu entscheiden:
-
varkann für den lokalen Zustand verwendet werden (z. B. innerhalb eines Schauspielers). -
mutableführt in bestimmten Situationen zu einer besseren Leistung.