From the rejection rationale:

> * Individuals or teams that feel that explicit “self.” is beneficial for 
> their own code bases can enforce such a coding convention via tooling with 
> the status quo. If this proposal were accepted, those opposed to the proposal 
> would effectively have no recourse because the language itself would be 
> enforcing “self.”.

With which I agree, giving the final decision to the user/team. This which 
pretty much means that teams and individuals such as myself will continue using 
the explicit self to keep on the safe side. However, the explicit self won't 
prevent you from the class of bugs refering to an instance variable/method by 
mistake unless there's a warning for not using the explicit self.

Swift is designed (from what I understand) to become much more than just a 
language for "apps on the AppStore", i.e. something that could be used in 
medicine, military, etc. - in applications where code-safety is the number one 
priority since discovering bugs in production can have lethal consequences - 
and the current ambiguity of being able to refer to instance members without 
self is IMHO undermining Swift in this kind of usage.

When you take a look at some of the more sensitive projects (in C/C++), they 
have most of the non-standard warnings turned on to prevent bugs at compile 
time - which is another aspect of Swift that is held up high, yet this is a 
place nasty bugs (in my experience) happen a lot (as per my original email 
here, I spent 2 hours debugging an app after refactoring a few larger methods 
into smaller ones) - and this is simply not acceptible e.g. for NASA usage (not 
saying NASA will be using Swift, just giving an example).

Krystof


> On May 20, 2016, at 12:00 AM, Brent Royal-Gordon via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
>> What I don't understand is why can't this be an option. There are two camps, 
>> each advocating either preferences and each camp is quite vocal about it. 
>> Why not let the user decide? Hence my proposal to make it an optional 
>> warning.
> 
>> When you take a look at all the LLVM warnings options, there are things 
>> people usually don't have enabled, but advanced users or users who prefer 
>> safer code, can enable them. E.g. -Wfour-char-constants for warning about 
>> four-char OSTypes, etc. (just go through them in Xcode build settings).
> 
> Clang has lots of these kinds of warning flags, but so far, Swift does not. 
> This is not an accident—it's a deliberate design. We don't want dragging a 
> file between projects, or otherwise moving it from one context to another, to 
> suddenly make it emit errors or warnings. There should not be dialects of 
> Swift; there should be one Swift that everyone writes in.
> 
> However, that necessarily means that we can't provide a lot of 
> configurability in terms of warnings. If every warning needs to be on for 
> every file, then we need to choose warnings which have a high signal, and we 
> need to have ways to disable them merely by editing code without changing its 
> semantics (like by adding extra parentheses). This limits the kinds of 
> warnings we can provide: we can't really warn about subjective style issues. 
> Even the "unnecessary var" and "why don't you assign to _?" warnings are 
> toeing the line of acceptable noisiness in Swift diagnostics.
> 
> So because of the philosophy behind Swift's error and warning design, we 
> can't really support things like an "implicit self" warning. It quite simply 
> runs counter to the language's goals. That's why we're interested in robust 
> linting and formatting tools. Swift is packaged as a library not merely 
> because it's a cleaner design, but also because it makes it easier to build 
> accurate tools like these, things that can help fill in the gaps in Swift's 
> own tooling.
> 
> -- 
> Brent Royal-Gordon
> Architechies
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> 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