2009-04-21 9 views
6

Czekam na napisanie małej biblioteki Scala, aby poczuć jej model programowania Aktora.Czy biblioteki Scala mają tę samą konwencję odwróconej domeny, aby nazwać pakiety jako Java?

W przykładowym kodzie, z którym się zetknąłem, niektóre biblioteki używają odwróconej domeny (np. Org.foo.bar) dla pakietów, a niektóre nie (może po prostu dla zwięzłości).

Czy biblioteki Scala powinny używać takich samych konwencji nazewnictwa pakietów jak Java? Bardziej ogólnie, czy istnieją jakieś dobre sugestie dotyczące stylu kodowania Scala, takie jak Python z PEP 8?

Tak, prawdopodobnie stawiam wózek przed koniem, ale uważam, że mogę uzyskać przyzwoite wyczucie języka, widząc także niektóre z konwencji, które się wyrwały.

Dzięki

Odpowiedz

8

Lift, jeden z większych projektów w Scala, wykorzystuje odwróconą konwencję nazw domen, które w rzeczywistości sprawia, że ​​wiele sensu, jak Scala i Java mogą współdziałać, to ma się rozumieć, że chcesz utrzymuj rzeczy tak bezbolesne, jak to możliwe, i naprawdę nie mogę wymyślić żadnych wartościowych korzyści z robienia tego w jakikolwiek inny sposób.

+0

Dzięki temu, patrząc na strukturę struktury Lift pomaga mi lepiej zrozumieć opakowanie/moduły. Konwencja odwróconej domeny jest w porządku, ale używam Pythona wystarczająco długo, ponieważ mogę również docenić bardziej płaskie hierarchie pakietów. Zdolność do importowania aliasów wydaje się być dobrym rozwiązaniem dla tych rzadkich okoliczności, w których występuje kolizja przestrzeni nazw, choć oczywiście nie rozwiązuje ona całkowicie problemu. –

+0

Zobacz http://www.drmaciver.com/2009/07/how-packages-work-in-scala/ jako przykład potencjalnego problemu. Niemniej jednak rozsądnie jest postępować zgodnie z normą Java. – mauhiz

2

Scala zasadniczo dziedziczy większość konwencji Java (prawie we wszystkich). Istnieje kilka wyjątków od tego. Na przykład, Scala „pobierające i ustawiające” są rzeczywiście wykonane w następujący sposób:

class Person { 
    private var _name: String = _ 

    def name = _name 

    def name_=(s: String) { 
    _name = s 
    } 
} 

W przypadku wątpliwości, pożyczyć konwencję z Java, Ruby lub Haskell (w tej kolejności preferencji). Jeśli chodzi o pakiety, odpowiedź brzmi "tak", pakiety Scala są nazwane przy użyciu konwencji odwróconej domeny.

Powiązane problemy