Comments on Blogs:AndreiBadea:EnumsInAPIs
Normally in a release version one wouldn't want any asserts enabled so maybe not a very big problem? The general principle is if you are designing a library you don't make any assumptions on how your client calls your API.
Perhaps I'm wrong though...
--Alex 20:21, 16 July 2008 (CEST)
In this example, if the user wanted to ensure that he covers all the fields of the enumeration, then he wrote something wrong, he should not have the "default:" case.
If the switch covers all the fields of the enumeration, the "default:" is not needed and not warnings/errors are generated at compile time.
We can also assume that if the user use the default close here, his meaning is not to cover all the fields of the enumeration, but to only cover a subset and throw an assert exception when encounter a field of the complementary subset or null.
--Vincent Cantin 03:26, 17 July 2008 (CEST)
To Alex: I have also seen IllegalStateException's thrown instead of an assert statement. Regarding the assumptions, you are right. But this case looks like one where you could want to break the rule. Not being able to add fields to the enum could be a big limitation.
To Vincent: you are right, many people have a default branch just to be sure, even when they know they have covered all fields of the enum (of the current version of the enum, that is).
--AndreiBadea 15:41, 17 July 2008 (CEST)
Could want to break a rule? This rule having been expressed in various ways by hthe MONSTERS of computer science would be then too strong for me to want to break it. There must be a subtlety I'm missing when following your example. I shall work on that further. That is after I've studied the design patterns. Otherwise no chance for me to pass the exams. Thanks!!
--Alex 23:28, 17 July 2008 (CEST)
Doesn't this depend on how the enum is used?
If a value of the enumerated type is in the result of an API method, and the switch statement above is in the client, and the new value can be returned in a result produced by previous-version client behavior, then adding a value to the enum can cause breakage.
But if the only uses of the enumerated type are in arguments to API methods, or the new value can only appear in a result for a request that used other new–version aspects, then this specific opportunity for error doesn't arise.
It is still possible for new semantic requirements (e.g. a rule that the new enum value is required in certain cases) to break the client.
I suggest that the real issue is this: if the new API still accepts all prior-version arguments and (for those arguments) returns the same results, then there's no breakage. Breakage occurs when a new version fails to accept previously-valid arguments, or returns results that previously could not occur.
--Joel Neely 13:37, 25 August 2008 (CEST)
If you compile your release with _NDEBUG the switch will fall through just fine since the assert macros are removed from the release code. This should be decent behaviour even with new binary versions of the code if the new enums are always added at the end.
Developers running debug code *might* catch the new enum value if it is set by the library, and the failed assertion will alert them to the new value that is available.
Basically it comes down to programming practices and disciplines for it to work, which are sometimes difficult to maintain in multi-user distributed development.
--Burton Samograd 07:18, 12 September 2008 (CEST)
Seriously! This might be one of the most beneficial weblogs we?ve run into upon thesubject. Essentially amazing publish! I?m another specialized in this particular subject matter so I can understand the working hard.
--escortes Toulouse 23:27, 17 April 2013 (CEST)
Discovered your write-up extremely interesting in fact. I genuinely appreciated examining it and also you make fairly some good details. I will bookmark this internet site with the upcoming! Relly excellent short article.
--Paris call girls 11:14, 19 April 2013 (CEST)
This is really a amazing blog, would you be interested in making time for an interview concerning just how you made it? If so e-mail myself!
--escorts Paris 01:45, 2 May 2013 (CEST)
Have you given any kind of consideration at all with translating your current site in to Spanish? I know a couple of of translaters here which might help you do it for no cost if you want to make contact with me personally.
--Paris call girls 14:18, 14 May 2013 (CEST)
I have bookmarked it in my google bookmarks.
--Paris call girls 15:02, 14 May 2013 (CEST)
<a href=vipescort-girls.com>escort France</a>
<a href=modelfortonight.com>France escorts</a>
<a href=parismodels.biz>Paris escort girls</a>
<a href=vipescort-girls.com>escort Paris</a>
<a href=modelfortonight.com>call girls Paris</a>
<a href=parismodels.biz>Paris escorts</a>
<a href=vipescort-girls.com>Paris escorts</a>
<a href=modelfortonight.com>France escorts</a>
<a href=parismodels.biz>escortes Paris</a>
<a href=vipescort-girls.com>escort service Paris</a>
--Paris escort 15:01, 1 June 2013 (CEST)
I definitely desired to deliver a quick concept to thank you for the nice tips and hints you're posting on wiki.apidesign.org . My time-consuming internet appear up has now been rewarded with helpful strategies to exchange with my family and friends. I'd claim that we readers fact are truly blessed to dwell in a helpful community with incredibly some great individuals with insightful points. I really feel really grateful to get discovered the webpage and appear ahead to a lot of additional entertaining moments reading right here. Thanks a good deal again for a good deal of things.
--escorte toulouse 12:52, 8 June 2013 (CEST)
exceptional site post. I am going to bookmark wiki.apidesign.org and check out a lot more often. I really like the website template
--escort bordeaux 14:18, 8 June 2013 (CEST)
Quelqu'un sait-il la musique qui joue sur le Secret Diary of a Girl annonce de l'appel itv?.
--France escort 17:09, 9 August 2013 (CEST)
How to apply a wordpress theme downloaded from other websites?
--Bierly exscort service Jesusa 06:18, 15 January 2014 (CET)