Sök…


Anmärkningar

Föredrar vals, immutable objekt och metoder utan biverkningar. Nå först efter dem. Använd varianter, muterbara objekt och metoder med biverkningar när du har ett specifikt behov och motivering för dem.

- Programmering i Scala , av Odersky, Spoon och Venners

Det finns fler exempel och riktlinjer i denna presentation av Odersky.

Håll det enkelt

Överkomplicera inte enkla uppgifter. För det mesta behöver du bara:

  • algebraiska datatyper
  • strukturell rekursion
  • monadliknande api ( map , flatMap , fold )

Det finns massor av komplicerade saker i Scala, som:

  • Cake pattern eller Reader Monad för beroende injektion.
  • Att överföra godtyckliga värden som implicit argument.

Dessa saker är inte tydliga för nykomlingar: undvik att använda dem innan du förstår dem. Att använda avancerade koncept utan ett verkligt behov gör att koden blir obesvärd, vilket gör den mindre underhållbar.

Packa inte för mycket i ett uttryck.

  • Hitta meningsfulla namn för beräkningsenheter.
  • Används for förstå eller map att kombinera beräkningar tillsammans.

Låt oss säga att du har något liknande:

if (userAuthorized.nonEmtpy) {
  makeRequest().map {
    case Success(respone) =>
      someProcessing(..)
      if (resendToUser) {
        sendToUser(...)
      }
    ...
  }
}

Om alla dina funktioner returnerar Either eller någon annan typ av Validation , kan du skriva:

for {
  user     <- authorizeUser
  response <- requestToThirdParty(user)
  _        <- someProcessing(...)
} {
  sendToUser
}

Föredrar en funktionell stil, rimligt

Som standard:

  • Använd val , inte var , där det är möjligt. Detta gör att du kan dra nytta av ett antal funktionella verktyg, inklusive arbetsdistribution.
  • Använd recursion och comprehensions , inte slingor.
  • Använd oföränderliga samlingar. Detta är ett samband med att använda val när det är möjligt.
  • Fokusera på datatransformationer, logik i CQRS-stil och inte CRUD.

Det finns goda skäl att välja icke-funktionell stil:

  • var kan användas för lokal stat (till exempel i en skådespelare).
  • mutable ger bättre prestanda i vissa situationer.


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow