Scala Language
Najlepsze praktyki
Szukaj…
Uwagi
Preferuj vals, niezmienne przedmioty i metody bez skutków ubocznych. Sięgnij po nich pierwszy. Używaj zmiennych, zmiennych obiektów i metod z efektami ubocznymi, jeśli masz na to konkretną potrzebę i uzasadnienie.
- Programowanie w Scali , Odersky, Spoon i Venners
W tej prezentacji Odersky znajduje się więcej przykładów i wytycznych.
Nie komplikuj
Nie komplikuj prostych zadań. Przez większość czasu będziesz potrzebować tylko:
- algebraiczne typy danych
- rekurencja strukturalna
- api-monad-api (
map
,flatMap
,fold
)
W Scali jest wiele skomplikowanych rzeczy, takich jak:
-
Cake pattern
lubReader Monad
do wstrzykiwania zależności. - Przekazywanie dowolnych wartości jako
implicit
argumentów.
Te rzeczy nie są jasne dla początkujących: unikaj ich używania, zanim je zrozumiesz. Korzystanie z zaawansowanych koncepcji bez rzeczywistej potrzeby zaciemnia kod, dzięki czemu jest mniej konserwowalny.
Nie pakuj za dużo w jednym wyrażeniu.
- Znajdź znaczące nazwy jednostek obliczeniowych.
- Użyj
for
zrozumienia lubmap
aby połączyć obliczenia razem.
Powiedzmy, że masz coś takiego:
if (userAuthorized.nonEmtpy) {
makeRequest().map {
case Success(respone) =>
someProcessing(..)
if (resendToUser) {
sendToUser(...)
}
...
}
}
Jeśli wszystkie funkcje zwracają Either
czy inny Validation
typu -jak można napisać:
for {
user <- authorizeUser
response <- requestToThirdParty(user)
_ <- someProcessing(...)
} {
sendToUser
}
Racjonalnie preferuj funkcjonalny styl
Domyślnie:
- Gdziekolwiek to możliwe, używaj
val
, a nievar
. Pozwala to na płynne korzystanie z wielu funkcjonalnych narzędzi, w tym z dystrybucji pracy. - Używaj
recursion
icomprehensions
s, a nie pętli. - Używaj niezmiennych kolekcji. Jest to konsekwencją używania
val
gdy tylko jest to możliwe. - Skoncentruj się na transformacjach danych, logice w stylu CQRS, a nie CRUD.
Istnieją dobre powody, aby wybrać styl niefunkcjonalny:
-
var
może być używana dla stanu lokalnego (na przykład wewnątrz aktora). -
mutable
daje lepszą wydajność w niektórych sytuacjach.