Agreed, this is a topic that needs to be properly solved.

Sent from my iPhone

> On 20 May 2016, at 05:34, Krystof Vasa via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> 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
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to