Pardon me if this has been raised before.

I gave a short presentation at our Cleveland CocoaHeads this week on what is 
coming in Swift 3. One of the attendees stayed behind to ask about the naming 
guidelines for mutating vs non-mutating. He is fairly new to Swift - coming 
from Ruby. I have no Ruby experience but am passing his thoughts on to this 
list.

He said that in Ruby they decorate the name with a symbol (I believe in their 
case it is “!”) to distinguish between the two. Although usually I’m not a fan 
of such naming conventions, we do something similar with inout parameters.

For example, if we have

func myFunc(param: inout String) { …}

we call it like this (using the Swift 3 first label convention)

myFunc(param: &aName)

We use the & to signal that the value of aName might be changed by the call to 
myFunc().

Similarly, instead of settling on a naming convention for verb vs 
verbed/verbing we could name the methods descriptively and require a symbol 
(here I use & but only for illustration) to distinguish between mutating and 
non-mutating

so we would have 

myArray.sort&()

and

sortedArray = myArray.sort()

Xcode and other tools could enforce this naming pattern and warn us that a 
mutating method must end in “&” and that a non-mutating method is not allowed 
to.

Best,

Daniel
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to