On Thu, May 21, 2009 at 2:09 PM, Jeff Eaton <[email protected]> wrote: > On May 21, 2009, at 11:50 AM, Chris Johnson wrote: > >> After all, we wouldn't want developers to have actually document >> anything they write. ;-) > > Well... documentation is needed in either case. But with ints, collisions > are absolutely inevitable. I ran into this with VotingAPI early on -- I had > a const for 'vote_type', and it had 3 values out of the box. Pretty quickly, > two other modules both defined fourth value types. suddenly, those modules > couldn't co-exist with each other. > > There's nothing in *my* documentation that could have solved that, other > than a pointer to a wiki page where everyone claimed ints.
Thanks for the clear example, Jeff. It makes a huge difference. If developers of other modules can arbitrarily define new values your module has to work with, collisions are inevitable, whether integer or strings. Strings do enjoy some advantages, including being easier to grep for. P.S. Of course, *user* visible constants should be strings. I always thought we were talking about developer-only constants here.
