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 lub Reader 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 lub map 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 nie var . Pozwala to na płynne korzystanie z wielu funkcjonalnych narzędzi, w tym z dystrybucji pracy.
  • Używaj recursion i comprehensions 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.


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow