Scala Language
Les meilleures pratiques
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
ouReader 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 desmap
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
, pasvar
, dans la mesure du possible. Cela vous permet de tirer parti de plusieurs utilitaires fonctionnels, notamment la distribution du travail. - Utilisez la
recursion
et lescomprehensions
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.