我致力于开发外部 API。我在公共接口中添加了一个方法:
public void AddMode(TypeA mode);
public void AddMode(TypeB mode); // the new method, TypeB and TypeA are not related at all
看起来不错,直到有一个测试通过了null
. 这使编译器与模棱两可的调用混淆。我通过强制转换为空来修复测试。
但是我的问题是:
- 我应该仅仅因为这个而改变名字吗?
- 还是应该让客户像我一样做演员?(如果他们因任何原因通过 null)
在设计 API 时,在这种情况下最好的是什么?
编辑:
调用就像这样AddMode(null),而不是:
TypeA vl = null;
AddMode(v1); // this doesn't cause a problem