I work on developing an external API. I added a method to my public interface :
public void AddMode(TypeA mode);
public void AddMode(TypeB mode); // the new method, TypeB and TypeA are not related at all
It looked good, until one test broke that was passing a null . That made the compiler confused with ambiguous call. I fixed the test with casting the null.
However my question is :
- Should I change the name just because of this?
- Or should let the client do the cast as I did? (if they pass null for whatever reason)
What is the best in this case while designing APIs ?
Edit :
the call was like this AddMode(null) , not like :
TypeA vl = null;
AddMode(v1); // this doesn't cause a problem
An API should be designed so that it’s easy to use correctly and hard to use incorrectly.
Your API is easy to use correctly:
does compile.
It’s harder to use incorrectly:
does not compile. The user ist forced to do something like
Which should make him think, whether this is expected usage. So I think your API is OK as it is.