- Classes being "closed" by default is unusual in most OOP languages and allows for a careless developer to unknowingly write a library that restricts how it can be used by not making classes open as needed.
- Swift's distinction between file-private and declaration-private scopes is confusing (
fileprivate
andprivate
as of Swift 3) and completely unnecessary most of the time, since when one includes two top-level declarations in the same file, it's usually because the declarations are supposed to be visible to each other.
open
: all declarations are implicitly open; noopen
keyword.final
: inherits implicit visibility when none is specified.