【问题标题】:Is it possible to define a macro that looks almost like a comment?是否可以定义一个看起来几乎像注释的宏?
【发布时间】:2009-11-25 14:41:45
【问题描述】:

我尝试制作一个有用的日志记录宏。但是我发现 NSLog 和所有其他类型的带有文本信息的宏只会分散代码的注意力。

有什么方法可以“破解” Xcode,使其能够解释类似

的内容
/*** do this because of that ***/ 

作为一个宏调用,它会导致调用 NSLog,例如?我希望这些日志“感觉”像 cmets。任何其他看起来像关键代码的东西只会分散注意力并最终降低工作效率,然后记录正在发生的事情并没有真正的好处。

【问题讨论】:

  • 我不知道,我个人认为那些 hacky cmets 会更加分散注意力,最终使代码更加混乱。 (“这些日志是从哪里来的?!”)

标签: iphone cocoa cocoa-touch xcode


【解决方案1】:

是否可以定义一个看起来几乎像注释的宏?

为什么要降低代码的可读性?

答案是否定的,这是一件好事。

有什么方法可以“破解”Xcode,使其能够解释类似

/*** do this because of that ***/

作为宏调用…

可能,但那没用。所要做的就是使语法着色不正确(将此注释着色,就好像它是一个函数调用一样)。编译器(GCC 或 Clang)仍会将其视为注释。

让编译器认为它是函数调用或宏调用实际上会在运行时实现日志输出,但即使你可以这样做,它仍然是一个坏主意,因为你会将函数调用或宏调用伪装成评论。

如果您希望程序记录消息,请编写记录代码:

NSLog(@"Do %@ because of %@.", foo, bar);

这段代码是明确在运行时做某事的代码。没有奥秘。没有惊喜。这就是为什么它更好。

【讨论】:

    【解决方案2】:

    您可以将一行或多行 NSLog 括在花括号中,然后使用 Xcode 的折叠选项隐藏它们。

    例子:

    {
        NSLog(@"<#label#>");
        NSLog(@"<#label#>");
    }
    

    折叠后的样子:

    {...}
    

    大括号在展开时还会缩进语句,使它们在视觉上更加明显。

    我认为您应该重新考虑使用日志语句。如果您有与代码行一样多的日志语句,则说明有问题。您应该使用调试器来打印大多数值和消息。如果你有这么多的日志语句,你就会达到日志语句中的错误比代码产生更多错误的地步。您在清理发布代码时也遇到了很大的问题。

    【讨论】:

      【解决方案3】:

      我不知道(尽管我可能错了!)

      我认为,如果您希望它看起来不同,宏可能是您所希望的最好的 - 至少它会以不同的颜色突出显示 :)

      【讨论】:

      • 但文本仍然是愤怒的红色。我从我的代码中删除了所有内容,尽管它对调试有很多的帮助。当再次开始发展时,它只会分散注意力,以至于感觉不值得。日志行和代码行一样多……大概有 5000 条。
      • 也许您需要问自己为什么要记录这么多日志?每行的日志似乎确实过多。
      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多