Internal modifier by default

У меня есть вопросы касательно модификатора доступа в Kotlin internal

  1. Почему было принятно решение убрать модификатор доступа package? ведь она тоже полезная, особенно когда архитектура приложения такая что все делится не по слоям а по фичам.
  2. Можно ли как то сделать internal модификатор по дефолту, а public уже писали бы, есть ли какие либо плагины для этого?
  3. Почему же public по дефолту? На самом деле public чаще используется чем package в Java, но если в Kotline есть internal, в модульных проектах да и даже в микросервисах, будет чаще использваться internal(при условии что разработчики будут заботиться о минимизации доступа)

Ответы (1 шт):

Автор решения: Sergei Buvaka
  1. Потому что в Kotlin пакет как таковой не несет той нагрузки которой он нес в Java. В Kotlin вы можете в одном файле поместить неограниченное количество классов или функций без объявления класса, в отличии от Java в которой любая функция должна объявляться только внутри классов. Второй момент: в Java уровень доступа protected можно обойти извне если указать для нового класса тот же пакет ( вот тут могу в способе немного ошибаться, но точно есть способ это обойти), это одна из причин почему разработчики Kotlin отказались от этого модификатора доступа.
  • 2 и 3 пункты. В большинстве случаев когда мы пишем новый класс, нам нужен как раз публичный доступ, т.к. в повседневных задачах мы реже используем закрытые уровни доступа. Исключение тут несут private функции, но тут IDE вам подсветит если ваша функция нигде не будет использоваться и будет иметь public модификатор.

    Что касается разработчиков библиотек, то тут ваше замечание действительно резонно. И именно поэтому сейчас разработчики Kotlin работают над новым режимом в котором как раз все модификаторы, в том числе и public нужно будет указывать явно.

→ Ссылка