[swift-evolution] renaming CustomStringConvertible
Dave Abrahams
dabrahams at apple.com
Fri Jul 1 19:20:27 CDT 2016
on Fri Jul 01 2016, Dmitri Gribenko <swift-evolution at swift.org> wrote:
> On Fri, Jul 1, 2016 at 12:16 PM, Eric Habberstad via swift-evolution
> <swift-evolution at swift.org> wrote:
>>
>> To the Swift community,
>>
>> May I put forth a couple of new names for the following protocol:
>>
>>
>> - CustomStringConvertible — rename as ‘Descriptive’ or as ‘Revealable’
>>
>>
>> Two goals for Swift is clarity and joy in use of the language, so I strongly
>> feel that ‘Custom-‘ not be part of any new name here since it contributes
>> little except verbosity
>
> Hi Eric,
>
> This protocol was called Printable before, but it caused a lot of
> confusion for developers, and was guiding the developers toward
> writing incorrect APIs. We have seen a lot of developers writing code
> like this:
>
> func printAll(_ values: [Printable]) {
> for v in values { print(v) }
> }
>
> This code is unnecessarily restrictive since in Swift everything can
> be converted into a String.
>
> func printAll(_ values: [Any]) {
> for v in values { print(v) }
> }
>
> The same goes for retrieving debug descriptions and mirrors. Any
> value can do that. It is just that some values can opt into
> customizing this behavior.
>
> Thus, we renamed the protocols, adding the Custom~ prefix. Our
> intention was to encourage only conformances to these protocols, and
> discourage writing APIs against them.
In fact, this should be in the “frequently rejected” list.
--
Dave
More information about the swift-evolution
mailing list