[swift-evolution] Issues with 0005-Better Translation of Objective-C APIs Into Swift

Dave Abrahams dabrahams at apple.com
Tue Feb 2 19:59:08 CST 2016


on Tue Feb 02 2016, Jordan Rose <swift-evolution at swift.org> wrote:

>> On Feb 2, 2016, at 17:28, David Owens II via swift-evolution
>> <swift-evolution at swift.org> wrote:
>> 
>> 
>>> On Feb 2, 2016, at 4:54 PM, Dave Abrahams via swift-evolution
>
>>> <swift-evolution at swift.org
>>> <mailto:swift-evolution at swift.org>>
>>> wrote:
>>> 
>>>> Similarly,
>>>> 
>>>> let content = listItemView.text.trimming(characters: .whitespaceAndNewlines)
>>>> 
>>>> At least I have some context at the call site what the purpose of
>>>> .whitespaceAndNewlines.
>>> 
>>> You wouldn't say "go to the garden and trim the plant: rhododendrons".
>>> It isn't necessary for comprehension.  Why do you feel characters: is
>>> necessary here?
>> 
>> Because unlike the English phrase, "trimming" does not have an
>> implicit object set based on the context of a string; what else
>> would you typically trim in a garden other than plant life? I could
>> naturally create an API that allows trimming by a line range or
>> string content, as an example.
>> 
>> "public func foo() {}".trimmed(text: "public ")
>> longContentWithKnownPreamble.trimmed(lines: 0..<5)
>> 
>> We could make these different APIs as opposed to overloads, though
>> I'm not convinced that they are not simply different ways to trim
>> content.
>
> That's actually why this one is "trimming", not "trimmed". "trimming"
> allows a direct object; "trimmed" does not.
>
> I don't really have a problem with this overload set, although
> admittedly I can't tell if we're trimming prefixes, suffixes, or both,
> and I would hope that's consistent between the two.
>
> inputText.trimming(.whitespaceAndNewlines)
> inputText.trimming("public ")
>
> These are both perfectly good noun phrases in English, too: "[get me]
> the inputText, trimming whitespace and newlines" and "[get me] the
> inputText, trimming 'public '".
>
> (But to play David's Advocate, it also seems perfectly reasonable in
> English to say "[get me] the inputText, trimming whitespace and
> newline characters" and "[get me] the inputText, trimming the string
> 'public '".)

Back to Strunk & White.  Yes, people often use more words than
necessary, so it sounds normal.  These two aren't so bad, but it's death
by a thousand cuts.

-- 
-Dave



More information about the swift-evolution mailing list