[swift-evolution] Proposal: 0009 Require self for accessing instance members

Dan Loewenherz dan at lionheartsw.com
Thu Dec 17 11:54:11 CST 2015

On Thu, Dec 17, 2015 at 11:28 AM, Michael Brown via swift-evolution <
swift-evolution at swift.org> wrote:

> On Tue, Dec 15, 2015 at 21:03 Sune Foldager via swift-evolution <
> swift-evolution at swift.org> wrote:
> > Personally, I am against using mandatory self. I have coded a lot of
> Python, and I find it quite annoying to have to type (and read) “self.”
> everywhere. It’s a balance, of course:
> >
> > “self.” everywhere means you can see what’s an instance member and
> what’s a local variable. That’s generally a good thing. But it also means a
> lot of filler text in your code, which makes reading and writing slower.
> That’s not so good. It’s a balance, and in this case my experience from C#
> (and, as mentioned, Python) is that I much prefer C#’s non-mandatory use of
> “this”/“self".
> >
> > I see that this proposal is going to be reviewed as SE-0009, and I am a
> bit concerned that not all arguments are being considered because of the
> contents of the proposal text: The only counter argument mentioned in the
> proposal has to do with capturing semantics in closures. This is fine, but
> why isn’t the counter argument of verbosity being mentioned? This has been
> brought up on the list as well.
> >
> > Also, the “Community Responses” section exclusively lists positive
> feedback. Is that how it’s supposed to be with the SE process? If not,
> where are the arguments from people who are -1 on the proposal?
> >
> > I really hope the review team considers:
> > - The negative responses on this list as well. Also consider that many
> Swift developers are not on this list; I doubt it’s representative, either,
> being dominated by “language interested” developers.
> > - The rather large amount of changes to existing code required.
> I couldn't agree more on all points. I strongly object to this proposal.
> Requiring self makes code unnecessarily verbose and is one of the things I
> least liked about Objective-C compared to other languages (e.g. C#, Python,
> Java) where the use of self/this is optional. It is only only actually
> necessary when resolving ambiguity with local variables, in the few
> situations where such ambiguity exists (initialisers mostly).

Correction: self is not optional in Python.

I mentioned this earlier on the thread, but if anyone wants a further, more
“in-depth” reading of the subject, there is plenty of debate out there. For
what seems like time immemorial, there have been lobbies to make self
implicit in Python as well (none have succeeded).

Guido van Rossum wrote a post on this very topic which might be somewhat
relevant. There are reasons specific to Python as to why it can’t remove
self (e.g., it was never implicit), but the post touches on other reasons
relevant to Swift’s situation as well:

The comments of the post are also pretty illuminating from both sides.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151217/9b6471fa/attachment.html>

More information about the swift-evolution mailing list