W3C home > Mailing lists > Public > public-webrtc@w3.org > December 2011

Re: Remove numeric constants from WebRTC

From: Cullen Jennings <fluffy@cisco.com>
Date: Thu, 29 Dec 2011 19:47:15 +1100
Cc: "Tab Atkins Jr." <jackalmage@gmail.com>, public-webrtc@w3.org, hta@google.com
Message-Id: <33742028-3606-41CE-B356-29F591603F23@cisco.com>
To: Harald Alvestrand <harald@alvestrand.no>

I'll note that using strings instead of integers is somewhat crappy when an API call needs to be mapped to ENUMs in other programming languages such as C. 


On Dec 22, 2011, at 3:27 , Harald Alvestrand wrote:

> On 12/21/2011 04:45 PM, Tab Atkins Jr. wrote:
>> On Tue, Dec 20, 2011 at 7:48 PM, Harald Alvestrand<harald@alvestrand.no>  wrote:
>>> On 12/20/2011 11:54 PM, Tab Atkins Jr. wrote:
>>>> There was no official resolution about this, as it's a style/design
>>>> thing, not an actual change in the spec.
>>> So (formalistically) how do observers know that this was the conclusion?
>>> I'd be happy to be pointed at an email in the archive of the WG saying "as
>>> WG chair, I conclude that this discussion resulted in....."
>> I'm not sure I understand - the fact that there's a note in the spec
>> means that the editor decided to put it there.
>> 
>> However, the bug that led to Cameron adding this text was
>> https://www.w3.org/Bugs/Public/show_bug.cgi?id=14878
> Interesting discussion - thanks!
> 
> Now it's clear that at least you, Cameron and Anne are convinced, and nobody's objected strongly on the bug - the fact that this bug tracker CCs the mailing list makes me reasonably confident that there aren't engaged, strong objectors out there.
> 
> I read a very strong objection to use of bitfields, and a not-quite-so-strong (but still clear) objection to the use of integer constants.
>>>>   However, I can quickly list
>>>> the reasons why the decision was made:
>>>> 
>>>> 1. Constants are more verbose than strings of the same name, as you
>>>> must repeat the name of the interface as well.
>>>> 2. Numeric constants can be passed in two ways to a function, and the
>>>> bad way (as integers) is much shorter, and thus often more attractive.
>>>> 3. Constants don't buy you anything over strings - strings can be
>>>> interned, etc.
>>>> 
>>>> In general, experience shows that people usually forgo the named
>>>> constant and just use the numbers instead, which is the worst outcome
>>>> possible, as it makes the code very difficult to read and understand.
>>>> Since using strings instead has no real downsides, and avoids all of
>>>> the downsides of numeric constants, they are now the preferred way to
>>>> handle this sort of thing.
>>> I see the logic. The lack of enums in the language hurts again.
>>> I still miss the ability to document (for programmers) in WebIDL what the
>>> permitted values are; is there a comment convention for doing that at the
>>> moment?
>> Enums were just added yesterday, due to feedback on an unrelated bug.
>> ^_^  http://dev.w3.org/2006/webapi/WebIDL/#idl-enums
> With that addition, and the fact that the API to enums is formulated in terms of strings, I feel confident in recommending that the APIs in WebRTC that use integers for enum-like properties should be changed to use strings.
> 
> Thank you!
> 
>                       Harald
> 
Received on Friday, 30 December 2011 09:39:09 UTC

This archive was generated by hypermail 2.3.1 : Monday, 23 October 2017 15:19:26 UTC