在C#中我使用#warning
和#error
指令,
#warning This is dirty code... #error Fix this before everything explodes!
这样,编译器会让我知道我还有工作要做.您使用什么技术来标记代码,这样您就不会忘记它?
与标记它们// TODO
,// HACK
或其他注释标记,将在Visual Studio中的任务窗格中显示出来.
请参阅使用任务列表.
Todo评论也是如此.
我们还添加了一个特殊的关键字NOCHECKIN,我们在源代码控制系统中添加了一个commit-hook(很容易用至少cvs或svn),它扫描所有文件并拒绝签入文件,如果它找到NOCHECKIN的文字随处可见.
如果您只想测试一些内容并确保它不会被意外地检入(在提交源代码控制的所有内容的差异期间通过注意的眼睛),这非常有用.
我使用//TODO:
//HACK:
和throw new NotImplementedException();
我的方法的组合来表示未完成的工作.此外,我在Visual Studio中添加不完整的书签.
// TODO:人的名字 - 请解决这个问题.
这是在Java中,您可以查看Eclipse中的任务,它将找到对此标记的所有引用,并可以按人员对它们进行分组,以便您可以将TODO分配给其他人,或者只查看您自己的TODO.
如果我必须在变更过程中丢弃所有内容,那么
#error finish this
如果这是我以后应该做的事情,它会进入我的bug跟踪器(用于所有任务).
"待办事项"的评论在理论上是很好的,但在实践中并不是那么好,至少在我的经验中.如果你要被拉开足够长的时间来需要它们,那么它们往往会被遗忘.
我赞成Jon T的一般策略,但我通常只是暂时破解代码 - 我经常插入一个故意未定义的方法引用,让编译器提醒我需要回到的地方:
PutTheUpdateCodeHere();
在禁用状态下添加测试.它们出现在所有构建报告中.
如果这不起作用,我提交一个错误.
特别是,我没有看到TODO评论的数量以任何有意义的方式减少.如果我在撰写评论时没有时间去做,我不知道为什么我以后会有时间.
我真正喜欢的一种方法是"黑客爆炸",正如奥伦·艾尼在这里所展示的那样.
try { //do stuff return true; } catch // no idea how to prevent an exception here at the moment, this make it work for now... { if (DateTime.Today > new DateTime(2007, 2, 7)) throw new InvalidOperationException("fix me already!! no catching exceptions like this!"); return false; }