Recherche…


Remarques

Préférez les vals, les objets immuables et les méthodes sans effets secondaires. Atteignez-les en premier. Utilisez des vars, des objets mutables et des méthodes avec des effets secondaires lorsque vous en avez un besoin spécifique et que vous en avez la justification.

- Programmation en Scala , par Odersky, Spoon et Venners

Il y a plus d'exemples et de lignes directrices dans cette présentation par Odersky.

Rester simple

Ne pas trop compliquer les tâches simples. La plupart du temps, vous aurez seulement besoin de:

  • types de données algébriques
  • récursivité structurelle
  • api semblable à une monade ( map , map flatMap , fold )

Il y a beaucoup de choses compliquées à Scala, telles que:

  • Cake pattern ou Reader Monad pour injection de dépendance.
  • Passer des valeurs arbitraires comme arguments implicit .

Ces choses ne sont pas claires pour les nouveaux arrivants: évitez de les utiliser avant de les comprendre. L'utilisation de concepts avancés sans réel besoin brouille le code, le rendant moins facile à entretenir.

Ne pas emballer trop dans une expression.

  • Trouver des noms significatifs pour les unités de calcul.
  • Utiliser for compréhensions ou des map pour combiner des calculs ensemble.

Disons que vous avez quelque chose comme ça:

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

Si toutes vos fonctions renvoient Either ou d'une autre Validation -comme type, vous pouvez écrire:

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

Préférer un style fonctionnel, raisonnablement

Par défaut:

  • Utilisez val , pas var , dans la mesure du possible. Cela vous permet de tirer parti de plusieurs utilitaires fonctionnels, notamment la distribution du travail.
  • Utilisez la recursion et les comprehensions s, pas les boucles.
  • Utilisez des collections immuables. Ceci est une corrolaire à l'utilisation de val chaque fois que possible.
  • Concentrez-vous sur les transformations de données, la logique de style CQRS et non CRUD.

Il y a de bonnes raisons de choisir un style non fonctionnel:

  • var peut être utilisé pour l'état local (par exemple, à l'intérieur d'un acteur).
  • mutable donne de meilleures performances dans certaines situations.


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow