Ricerca…


Osservazioni

Preferisci vals, oggetti immutabili e metodi senza effetti collaterali. Raggiungi per loro prima. Usa vars, oggetti mutabili e metodi con effetti collaterali quando hai una necessità specifica e giustificazione per loro.

- Programmazione in Scala , di Odersky, Spoon e Venners

Ci sono più esempi e linee guida in questa presentazione di Odersky.

Mantienilo semplice

Non complicare eccessivamente compiti semplici. Il più delle volte ti serviranno solo:

  • tipi di dati algebrici
  • ricorsione strutturale
  • api simili a monadi ( map , flatMap , fold )

Ci sono un sacco di cose complicate in Scala, come ad esempio:

  • Cake pattern o Reader Monad per iniezione di dipendenza.
  • Passare valori arbitrari come argomenti implicit .

Queste cose non sono chiare per i nuovi arrivati: evita di usarle prima di capirle. L'utilizzo di concetti avanzati senza una reale necessità offusca il codice, rendendolo meno manutenibile.

Non imballare troppo in una sola espressione.

  • Trova nomi significativi per le unità di calcolo.
  • Utilizzare for comprensioni o map per combinare insieme i calcoli.

Diciamo che hai qualcosa del genere:

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

Se tutte le funzioni restituiscono Either o di un altro Validation -come tipo, è possibile scrivere:

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

Preferisci uno stile funzionale, in modo ragionevole

Di default:

  • Usa val , non var , ove possibile. Ciò consente di sfruttare senza problemi un certo numero di utility funzionali, compresa la distribuzione del lavoro.
  • Usa recursion e comprehensions s, non cicli.
  • Usa collezioni immutabili. Questo è un correttivo per l'utilizzo di val quando possibile.
  • Concentrati sulle trasformazioni di dati, sulla logica in stile CQRS e non su CRUD.

Ci sono buoni motivi per scegliere lo stile non funzionale:

  • var può essere utilizzato per lo stato locale (ad esempio, all'interno di un attore).
  • mutable offre prestazioni migliori in determinate situazioni.


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow