Pracuję nad rozwojem zewnętrznego interfejsu API. I dodaje metodę do mojego publicznego interfejsu:Zmiana nazwy tylko z powodu Null?
public void AddMode(TypeA mode);
public void AddMode(TypeB mode); // the new method, TypeB and TypeA are not related at all
wyglądało to dobrze, dopóki nie złamał jeden test, który został przechodzącą null
. To spowodowało, że kompilator pomylił się z niejednoznacznym wywołaniem. Naprawiłem test, rzucając null.
Jednak moje pytanie brzmi:
- powinienem zmienić nazwę właśnie z tego powodu?
- Czy powinien pozwolić klientowi obsadzić obsadę tak jak ja? (jeśli z jakiegokolwiek powodu przekazują wartość zerową)
Co jest najlepsze w tym przypadku podczas projektowania interfejsów API?
Edit:
połączenie było jak ten AddMode (null), nie podoba:
TypeA vl = null;
AddMode(v1); // this doesn't cause a problem
Podobny problem tutaj [mijający null] (http://stackoverflow.com/questions/719546/c-passing-null-to-overloaded-method-which- metode- jest-) był polecany (doskonały odpowiedź) – V4Vendetta
@MBen - Proponuję zmienić nazwę metod. – adatapost
@ V4Vendetta Widziałem to przed opublikowaniem :-). Jednak zastanawiam się nad użytecznością API, jeśli powinienem pozwolić, aby klient wpadł w to. Nie rozumiem, dlaczego nazwaliby tą metodą wartością zerową, ale kto wie :-) – MBen