> On Mar 24, 2016, at 5:13 PM, Brent Royal-Gordon <[email protected]> > wrote: > >> I think it does. `module` could mean many things related to how Swift >> creates and consumes modules. >> `moduleprivate` combines something about access levels (public/private) and >> scope (module), is easy to >> Google, offers few "wrong" interpretations. By using a longer keyword, it is >> less flexible in meaning and >> more fixed in purpose. > > Sure, but is that worth 7 to 9 extra characters at every single use site for > something that's actually pretty common? Is it worth the muddled mess of an > all-lowercase keyword with no obvious break, or the attention-grabbing of a > capital letter or an underscore? > > `module` and `file` are not going to be obscure corners of the language. Most > people will probably learn about them at the same time they learn about > `public` and `private`. > > (Actually, if `module` continues to be the default, you probably won't see it > *that* often. You *will* see `file`, but that's the one that can't be as > easily confused with a declaration.) > > Obviousness for new users is great, but you can take it too far. We call the > type `Int32`, not > `SignedIntegerBetweenNegative2ToThe31stPowerAnd2ToThe31stPowerMinus1`—and if > we did, it's not clear the longer name would really be more obvious, because > it would be such a pain to read.
`moduleprivate` is the default value. I doubt it will get used much if at all. I don't think `fileprivate` will get used much either but in such cases, I think those seven extra letters are essential and documenting. The two remaining public and private access levels are simple and intuitively obvious. -- E _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
