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