I disagree, my proposal is not to rename Apple frameworks. 
It is to improve the importing of Objective-C designed frameworks to remove the 
unnecessary prefixes.

– Louis D'hauwe

> On 30 Mar 2017, at 23:07, Adrian Zubarev <adrian.zuba...@devandartist.com> 
> wrote:
> 
> The issue is, this has nothing to do with swift evolution. You could file a 
> bug report for the Apple frameworks, but I doubt something this huge will 
> make it through.
> 
> 
> 
> 
> -- 
> Adrian Zubarev
> Sent with Airmail
> 
> Am 30. März 2017 um 23:03:52, Louis D'hauwe via swift-evolution 
> (swift-evolution@swift.org <mailto:swift-evolution@swift.org>) schrieb:
> 
>> Apple frameworks contain prefixes, carried over from Objective-C.
>> These exist to prevent class and method name collisions.
>> 
>> Mattt Thompson has a great article about this, containing the following 
>> brilliant excerpt:
>> "Namespacing is the preeminent bugbear of Objective-C. A cosmetic quirk with 
>> global implications, the language’s lack of identifier containers remains a 
>> source of prodigious quantities of caremad for armchair language critics." 
>> (http://nshipster.com/namespacing/ <http://nshipster.com/namespacing/>)
>> 
>> Since Swift can handle with these naming conflicts, wouldn't it make sense 
>> to drop all framework prefixes in a Swift environment?
>> 
>> A classic example is UIKit, where all classes are prefixed with "UI". 
>> Code example:
>> 
>>     import UIKit
>> 
>>     class FooViewController: UIViewController {
>> 
>>     }
>> 
>> Dropping the prefix would simply lead to the following:
>> 
>>     import UIKit
>> 
>>     class FooViewController: ViewController {
>> 
>>     }
>> 
>> Since conflicts need to be handled by specifying the module name, the 
>> following could be used if "ViewController" was also used by either some, 
>> other than UIKit, imported framework or by a user defined class:
>> 
>>     import UIKit
>> 
>>     class FooViewController: UIKit.ViewController {
>> 
>>     }
>> 
>> "UIKit.ViewController" is of course quite longer than the current 
>> "UIViewController".
>> An improvement could be to allow frameworks to specify an abbreviated form.
>> UIKit could define "UI" as its abbreviation, making the following code valid:
>> 
>>     import UI
>> 
>>     class FooViewController: UI.ViewController {
>> 
>>     }
>> 
>> This all seems to me like a natural continuation of SE-0086 
>> <https://github.com/apple/swift-evolution/blob/9cf2685293108ea3efcbebb7ee6a8618b83d4a90/proposals/0086-drop-foundation-ns.md>.
>> I do realise this would be a major change, breaking pretty much every Swift 
>> iOS, macOS, tvOS and watchOS project.
>> But in the long term, I think it's worth it.
>> 
>> – Louis D'hauwe
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to