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 oder Reader 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 oder map 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 , sondern var . Auf diese Weise können Sie eine Reihe funktionaler Hilfsprogramme, einschließlich der Arbeitsverteilung, nahtlos nutzen.
  • Verwenden Sie recursion und comprehensions , 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.


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow