Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> why is having more than one account an "exception" at all? That's not an error or fail condition

It is if the caller is expecting there to be exactly one account.

This is why I generally like to return a set of things from any function that might possibly return zero or more than one things. Fewer special cases that way.

But if the API of the function is to return one, then you either give one at random, which is probably not right, or throw an exception. And with the latter, the person programming the caller will be nudged towards using the other API, which is probably what they should have done anyway, and then, as you say, the returns-one-account function should probably just not exist at all.



Chances are, the initial function was written when the underlying auth backend only supported a single account (structurally), and most clients were using that method.

Then later on, it was figured out that multiple accounts per credential set (?!?) needed to be supported, but the original clients still needed to be supported.

And either no one could afree on a sane convention if this happened (like returning the first from the list), or someone was told to ‘just do it’.

So they made the new call, migrated themselves, and put in a uncaught exception in the old place (can’t put any other type there without breaking the API) and blam - ticket closed.

Not that I’ve ever seen that happen before, of course.

Oh, and since the multi-account functionality is obviously new and probably quite rare at first, it could be years before anyone tracks down whoever is responsible, if ever.


There’s no good way to solve this, though. Returning an arbitrary account can have unpredictable consequences as well if it isn’t the expected one. It’s a compatibility break either way.


> There’s no good way to solve this, though.

Yes there is! Just get rid of it. It's useless. The re-implementation from using one to the other was barely a few moments of work, and even if you want to say "well that's a breaking change" I mean, yeah? Then break it. I would be far less annoyed if a function was just removed and Xcode went "hey this is pointed at nothing, gotta sort that" rather than letting it run in a way that turns the use of authentication functionality into a landmine.


I take it you’ve never had to support a widely used publicly available API?

You might be bound to support these calls for many, many years.


Exactly, which is probably why a better ‘back compatibility’ change couldn’t be agreed on.

But there is a way that closes your ticket fast and will compile!


Sure, but not introducing the ability to be logged into multiple accounts isn’t the best choice as well. Arguably, throwing an exception upon multiple logins for the old API is the lesser evil overall.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: