Kotlin - dostęp pakietowy

0

Dlaczego kotlin nie ma dostępu pakietowego?
Jest w tym jakiś celowy zabieg, czy w Javie większość nie używała i olali?

Trochę słabo, bo w własnie w Javie pozwalał na przeniesienie idei obiektowości (kilka klas 'schowanych' wystawiających jedynie publiczne api) na poziom pakietów i nie bardzo jest jak to zrobić w kotlinie. Niby można trzymać kilka małych klas w jednym pliku, ale to nie to samo

0

Tu masz jakąś dyskusję na ten temat: https://discuss.kotlinlang.org/t/kotlin-to-support-package-protected-visibility/1544/15

Generalnie, z tego co widzę, stwierdzili, że nie potrzebują modyfikatora dostępu package, a jeśli masz przypadek użycia, który miałby się zachować w podobny sposób, to znaczy, że Twoja aplikacja powinna zostać zmodularyzowana i powinieneś używać modyfikatora dostępu internal.

0

Tylko wydaje mi się że internal to jest duży overkill. Prosty przykład: klient jakiegoś api. Możesz w pakiecie mieć klasy:
FooDownloader - pobiera dane z zewnątrz
FooMapper - mapuje jsony/xmle/cokolwiek na jakieś wewnętrzny format
FooClient - jedyna publiczna klasa która używa powyższych i wystawia jakieś api.
Można to niby zrobić w jednej klasie, ale tak otrzymujesz 3 małe klasy, które łatwo ogarnąć, mające po jednej odpowiedzialności.

3

internal mnie czasem wkurza, mam teraz taki projekt, że już nie wiem ile jest modułów w gradle - zaczynam się gubić
package javowy faktycznie jest zrypany, ale w Scali zrobili całikiem IMO całkiem sensowny dostęp pakietowy, więc czmu kotlin tego nie skopiował, nie wiem.

Ratuje sytuację to, że prywatne private klasy widać z tego samego pliku .kt - więc czasamio ten jeden plik .kt robi za cały pakiet. Tak chowam czasem klasy.

0

@jarekr000000: problem kiedy staram się trzymać tego, żeby cała klasa mniej więcej mieściła mi się na monitorze (~100 linijek)

0

Ja z kolei nigdy do końca nie byłem przekonany do dostępu pakietowego za to modularyzację i internale mi pasują. Wydaje mi się też, że sporo zależy od tego jak dużo chcesz ukrywać na poziomie modułu być może masz już za duże moduły skoro szukasz drogi by ukryć w module dostęp do pewnych klas.

4
danek napisał(a):

@jarekr000000: problem kiedy staram się trzymać tego, żeby cała klasa mniej więcej mieściła mi się na monitorze (~100 linijek)

Musisz po prostu odpowiednio ustawić monitor:
java monitor

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