Internal modifier by default
У меня есть вопросы касательно модификатора доступа в Kotlin internal
- Почему было принятно решение убрать модификатор доступа
package? ведь она тоже полезная, особенно когда архитектура приложения такая что все делится не по слоям а по фичам. - Можно ли как то сделать
internalмодификатор по дефолту, аpublicуже писали бы, есть ли какие либо плагины для этого? - Почему же
publicпо дефолту? На самом делеpublicчаще используется чем package в Java, но если в Kotline естьinternal, в модульных проектах да и даже в микросервисах, будет чаще использватьсяinternal(при условии что разработчики будут заботиться о минимизации доступа)
Ответы (1 шт):
Автор решения: Sergei Buvaka
→ Ссылка
- Потому что в Kotlin пакет как таковой не несет той нагрузки которой он нес в Java. В Kotlin вы можете в одном файле поместить неограниченное количество классов или функций без объявления класса, в отличии от Java в которой любая функция должна объявляться только внутри классов. Второй момент: в Java уровень доступа protected можно обойти извне если указать для нового класса тот же пакет ( вот тут могу в способе немного ошибаться, но точно есть способ это обойти), это одна из причин почему разработчики Kotlin отказались от этого модификатора доступа.
2 и 3 пункты. В большинстве случаев когда мы пишем новый класс, нам нужен как раз публичный доступ, т.к. в повседневных задачах мы реже используем закрытые уровни доступа. Исключение тут несут private функции, но тут IDE вам подсветит если ваша функция нигде не будет использоваться и будет иметь public модификатор.
Что касается разработчиков библиотек, то тут ваше замечание действительно резонно. И именно поэтому сейчас разработчики Kotlin работают над новым режимом в котором как раз все модификаторы, в том числе и public нужно будет указывать явно.