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
-
flatMap
api (map
,flatMap
,fold
)
Es gibt viele komplizierte Dinge in Scala, wie zum Beispiel:
-
Cake pattern
oderReader Monad
für Abhängigkeitsinjektion. - Beliebige Werte als
implicit
Argumente ü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
for
Comprehensions odermap
Berechnungen 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
recursion
undcomprehensions
, nicht Schleifen. - Verwenden Sie unveränderliche Sammlungen. Dies ist eine Korrelation zur Verwendung von
val
wann 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:
-
var
kann für den lokalen Zustand verwendet werden (z. B. innerhalb eines Schauspielers). -
mutable
führt in bestimmten Situationen zu einer besseren Leistung.