我正在为 C# 应用程序构建框架,并打算留下一堆没有实现的方法 - 返回虚拟值。我打算回到他们身边,但不想不小心忘记实施其中的任何一个。
我想在遇到未实现的方法时发出信号,并使用虚拟值继续执行。
这样做的惯用方式是什么?
执行此操作的经典方法是:
throw new NotImplementedException();
这对调用者来说很清楚,以后很容易找到修复(事实上,它会自动显示在某些任务列表中)。但是,如果这不是一个选项,也许:
return 0; // TODO
再次,这将自动显示在任务列表中,并且很容易找到。
如果你想要更明显的东西:
[Obsolete("not implemented")]
public int Foo() {
return 0;
}
这将在调用者处显示为编译器警告,或者:
public int Foo() {
#warning Foo not implemented
return 0;
}
这将在该方法中显示为编译器警告。
传统上你会抛出一个NotImplementedException
存根,但这当然会终止该路径的执行。其他选项包括:
只是记录它。在您的日志或控制台输出中添加一行。
或者,根据弹出窗口让您烦恼的程度,您可以使用Debug.Assert
/Debug.Fail
在这些方法被命中时弹出一条消息。
也可以使用 TODO,这将显示在 Visual Studio 的任务列表中。
//TODO: Finish this method
public int dummy()
{
return 0;
}
否则
throw new NotImplementedException()
也许通过在没有实现的情况下在每个方法中抛出 NotImplementedException ?
要返回一个值,也许您可以使用模拟框架
由于您希望能够继续执行,因此TODO:
如果方法具有返回类型,我将使用 a 并返回默认值。
默认值是可以的,只要它是会导致单元测试失败的值,但 TODO 在任务列表中非常明显,特别是如果您使用 Resharper。