[swift-evolution] access control proposal

Ilya ilya at harmonicsense.com
Sat Dec 5 22:39:48 CST 2015


I think the it would help a great deal to have an access level modifier
that is really private and visible only inside the class itself. Right now,
the only way to hide implementation details for a class is to hide the
class code in a separate file, which is very inconvenient for several
reasons:

1) the meaning of the code changes depending on which file the class is in.
It's very easy to accidentally expose class internal details and then call
class elements that are meant to be used only inside the class. Having a
keyword for class internals will allow the compiler to ensure that only the
public API for the class is used from the outside world. The user can check
types on his own, but it's better that the compiler does it automatically.
Similarly, the user can check that only the proper APIs are called, but
it's better that the compiler does it automatically.

2) accessibility by file structure may cause some really short files.

3) It's impossible to group related classes in one file but still hide
implementation details inside each class

I think that it the best solution is to make private keyword do what it
states -- keep the class element private to the class. But if it's really
important to have a separate keyword for backward compatibility, it would
be the next best thing.

--
Ilya Belenkiy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151206/54ae4c4e/attachment.html>


More information about the swift-evolution mailing list