Jaki kontener DI dla Scali? Czy warto DI czy może wzorzec cake?

0

Witam,
Zaczynam poznawać język Scala, aby zapoznać się nowinkami technicznymi. Chodzi o poszerzenie horyzontów i długoterminowe planowanie poznania nowej technologii. Wcześniej programowałem głównie w javie: JEE i Spring. Mam dwa pytania związane z DI i testami.

  1. W Javie testowalność w izolacji najczęsciej była otrzymywana za pomocą DI. W Scali z tego co przeczytałem mam dwa podejścia:
    a) zastosować wzorzec cake
    b) zastosować kontener DI np. MacWire, ScalaDI (chcę pominąć rozwiązania stricte Javowe np. Spring i nauczyć się czegoś nowego typowo scalowego, wydaje mi się, że tak będzie lepiej)
  2. Widziałem, że wraz ze ScalaTest można korzystać z Mockito. Oznacza to, że sporo wiedzy jeśli chodzi o testowanie mógłbym przenieść ze świata Javowego.

Pytania:

  1. Jaki kontener DI jest mocno w duchu Scali i polecacie (dojrzałość, prostota i możliwości)? Nie musi być lekki, ma być skuteczny i prosty w użyciu jak Spring. Odnosze wrażenie, że temat DI jest znacznie mniej obecny w Scali niż w Javie i nie do końca rozumiem to zjawisko. Zależy mi na prostym rozwiązaniu jak Spring/Weld i o podobnych możliwościach.
  2. Czy nauka ScalaTest z Mockito to dobry pomysł? Widziałem, że ludzie tak do tego pochodzili.
  3. Czy na początku poznawania Scali powinienem zrozumieć jak działa Cake Pattern?

Dodam, że równolegle do języzka chcę poznać jeszcze Play Framework. Za jakiś czas chcę dorzucić do tego jakiś messaging w duchu aktorów i solidnie ruszyć z programowaniem współbieżnym.

Osoby nie programujące w Scali proszę o nie wypowiadanie się.

Pozdro i dzięki,

1

Osoby nie programujące w Scali proszę o nie wypowiadanie się.

O shit, sorry za linka, nie zauważyłem tego.

4

Cake, w zależności od projektu i podejścia, może znacząco wydłużać czas kompilacji.

Na początek możesz ograniczyć się do parametrów implicit, o ile w danym miejscu będzie to miało sens. Nie jest to typowe DI, ale z drugiej strony nie musisz powtarzać argumentów w wywołaniach i efekt jest w pewnych przypadkach zbliżony do DI.

ScalaTest możesz używać spokojnie z Mockito. Ja tak robię w pracy.

2

ad 1/3. Cake pattern warto poznać jak już ogarniesz podstawy języka. To narzędzie na najniższym możliwym poziomie (w sensie opiera się na funkcjonalnościach samego języka i nie wymaga bibliotek), czyli można je stosować prawie wszędzie i będzie ok. Z drugiej strony kontenery DI np. MacWire pozwalają na trochę inny rodzaj modularyzacji kodu (w teorii, podobnie jak w springu, do zmiany implementacji wymagana jest tylko zmiana konfiguracja i restart; z cake trzeba rekompilować).

ad 2. Mockito jest strasznie popularne i dlatego dobrze sprawdzi się ze ScalaTest. Na chwilę obecną w jednym z projektów porzuciliśmy Mockito na rzecz JMockit, który po prostu potrafi więcej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1