要删除#ifdef DEBUG部件是否可以发布?

时间:2009-04-09 21:10:49

标签: c debugging coding-style c-preprocessor

在发布源代码供其他人查看时,编码样式没有明确定义 (没有双关语) 你删除了#ifdef DEBUG部分吗?

(即仅在定义DEBUG时编译的部分)

如果我删除它,它会使代码看起来更好(或者我看起来更好 - 我真的希望有人知道我已经调试过,我是怎么做到的?),但是我会失去我的调试部件,或必须保留两个(或更多)版本的代码。

该怎么办?

6 个答案:

答案 0 :(得分:7)

我认为如果您的调试代码是干净的并且在任何日志记录语句中都有“专业”语言,那么可以将其保留。如果调试代码很麻烦或者有调试消息,例如“我在这里......”, “现在我来了......”你应该把它拿出来。

如果您的调试声明反映了一些您无法弄清楚的问题,那么如果您尝试将软件“出售”给某人,则最好将其删除。 (希望你以后可以解决它们......)

答案 1 :(得分:3)

除非您在评论中使用不可重复使用的语言,否则应保留代码。如果有人要使用您的代码,他们可能会需要这些代码,或者它将帮助他们理解您的代码。 (评论也是如此)

编辑:我过去经常处理其他工作室代码。我看过调试代码,死路径和许多其他东西,仍然是我唯一讨厌的东西,是那些剥离调试和评论代码的人,这使他们的代码真的难以维护

答案 2 :(得分:3)

我也投票支持。如果/当你开始处理你的第一个补丁时,你可能需要那些DEBUG阻止的部分。此外,QA不会喜欢你删除代码,即使它在指令中被阻止。

答案 3 :(得分:2)

如果你决定删除它们,只需在导出代码时用脚本过滤掉它们,不需要维护两个版本。

答案 4 :(得分:2)

使用源代码管理系统中的所有内容维护您的基本版本。

然后,如果您要分发以一种或多种方式过滤的源代码,请创建一个脚本,该脚本将生成源代码的发布版本。

不要维护这些二次过滤的存储库,始终生成它们。

但值得花时间吗?可能不是,你应该只分发一切,包括#ifdef DEBUG部分。

答案 5 :(得分:0)

维护ANYTHING的多个版本是不可取的。

只有在必须时才会这样做。