private — в пределах объявления (и extension в том же файле для того же типа); fileprivate — файл; internal — модуль (default); public — снаружи модуля; open — ещё и subclass/override снаружи.
Разбор
open только для классов/членов классов.
public init нужно писать явно для public struct.
- Скрывайте детали за
private/internal.
- Для SPM/framework API выбирайте минимально достаточный уровень.
Итог
Access control ограничивает поверхность API модуля и снижает связность.