[swift-evolution] API Guidelines Update
Charles Kissinger
crk at akkyra.com
Sat Feb 20 15:26:59 CST 2016
> On Feb 19, 2016, at 5:20 PM, Craig Cruden <ccruden at novafore.com> wrote:
>
> Neither really feel right - I am not against long names, but sometimes people have long names because they are unfocused and the API to a class/type has too many unfocused methods on it. Then it gets applied to other classes/types with less methods since it is more consistent with the naming of the class/types that they have already completed.
>
> Whereas “ing”/“ed” is against all the naming conventions (closer to opposite of what was acceptable) of any development environment I have worked in the last 30 years.
Hi Craig,
I just haven’t been able to come up with a convention that meets Dave’s requirements and is consistently better. The best “-ing” alternative to my eye is “with-":
s.expandTilde() // mutating
let t = s.withExpandedTilde() // non-mutating
x.append(y)
let z = x.withAppended(y) // Meh
a.trim(.whitespaceAndNewlines)
let b = a.withTrimmed(.whitespaceAndNewlines)
—CK
> It is not that I don’t accept and embrace
> change — if that were the case I would not be constantly learning.
>
> “ing” (the worst of the two) to me infers that something is in progress… i.e. “process”.isRunning or “process”.running.
>
> “ed” (least worst) to me infers that you are querying the state of something “process”.completed.
>
> Both mutable and immutable execute and complete and results are either returned or applied.
>
> I have generally (maybe always) kept things that “mutate” separate from things that don’t (unless I am working in a
> system where immutable vs mutable never entered the mind of the developer). It feels more focused. In most cases
> it is fairly easy to do, and cleaner. I don’t know if there is some performance reason why the mixing of the
> two (across the whole API) is more advantageous. But even in that case it will constantly be nagging me, and
> giving me the feeling that something went horribly wrong and it is something that needs to be looked at to
> see if it needs to be refactored and simplified.
>
> So for me it is not just that it is grammatically awkward, it will constantly be giving me a feeling that something went
> horribly wrong and that it needs to be looked at again to see if it could have been done in a more simplified
> and focused way.
>
>
>
>
>>
>> As I think you’ve said previously, it’s probably just a case where people (including me) need to get used to the idiom. There is a huge leap from:
>>
>> a.stringByTrimmingCharactersInSet(b)
>> to:
>> a.trimming(b)
>>
>> A couple of cognitive crutches that people have depended on are gone.
>>
>> There are things that make “-ing” function names more of an adjustment for some people, I think:
>>
>> - It’s an idiom (if that’s the right word) for function naming that a lot of people haven’t been exposed to before.
>>
>> - The expression at the call-site is grammatical, but perhaps not common usage, so people might still have to stop and think about what the function is doing until they get used to it.
>>
>> - Though not a problem unique to “-ing”s, the function's primary purpose is to return something, but the function name by itself doesn’t reflect that (though the full expression at the call site does).
>>
>> None of these are necessarily flaws, just things that people react to. So it might be reasonable to conclude there isn’t actually a problem. ;-)
>>
>>> ? Are they hard to read?
>>
>> In the limited sense of being unfamiliar usage for some people. It doesn’t seem grammatically awkward to me.
>>
>>> Is it hard to arrive at these names, somehow?
>>
>> Not IMO.
>>
>>> Are the guidelines simply not clear enough about the procedure for
>>> producing names mutating/non-mutating pairs?
>>
>> I think the people who have raised concerns are reacting to the aesthetics of particular examples and not to the difficultly of using the naming conventions.
>>
>>> Is it too easy to confuse that part of the guidelines with the general direction regarding methods with/without side-effects?
>>
>> Without the examples, I think it might be confusing because you’re sorting through grammar rules. The examples provide the clarity.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160220/3c915472/attachment.html>
More information about the swift-evolution
mailing list