当我写东西时,一半的努力倾向于添加清晰简洁的调试输出,或者在需要调试时可以启用/禁用的功能。
调试功能的一个示例是下载器类,我可以在其中打开 #define 使其“假装”下载文件并简单地将我已经拥有的文件交还给我。这样我就可以测试用户下载文件时会发生什么,而不必每次都等待网络物理抓取文件。这是一个很棒的功能,但是使用#ifdefs 会使代码变得更加混乱。
我最终得到了一堆#define
s like
// #define DEBUG_FOOMODULE_FOO
// #define DEBUG_BARMODULE_THINGAMAJIG
// ...
对于我想看的东西没有注释。代码本身变成了类似
- (void)something
{
#ifdef DEBUG_FOOMODULE_FOO
DebugLog(@"something [x = %@]", x);
#endif
// ...
#ifdef DEBUG_FOOMODULE_MOO
// etc
}
这对于编写/维护代码很有用,但对代码的外观没有任何作用。
无论如何,人们如何编写轻松的即时长期调试“东西”?
注意:我在这里不仅在谈论 NSLogging ... 我还在谈论上面的假装下载之类的东西。