这是一个好的做法吗? "/*/something/*/something//*/"

8
/*/ comment here
do some thing.
/*/
do some thing.
//*/

为什么人们会写出这样的代码?这是一种好的实践方式吗?

1
注释 - 最佳实践 - http://stackoverflow.com/questions/121945/how-do-you-like-your-comments-best-practices - Jonathan Holloway
9个回答

26

这通常只在测试时暂时使用。也就是说,您不应该将这样的代码提交到版本控制中,因为它可能会造成混淆。

例如,如果您正在测试两种不同的计算方法,可以使用此方法在它们之间切换。个人而言,我很少这样做,甚至从未尝试过。


对于那些不知道的人,您可以通过添加一个正斜杠来在两个代码段之间切换:

/*/ comment here
do some thing.
/*/
do some thing else.
//*/

//*/ comment here
do some thing.
/*/
do some thing else.
//*/

2
这种风格似乎更具永久性,因为它关注各种块的易于执行/撤消。在测试时,我更倾向于使用//在每一行上注释整个块以进行注释/取消注释。一个好的IDE也应该使这变得微不足道。 - tvanfosson
虽然在使用pico的时候这个功能很方便,但我仍然不喜欢它。 - Simeon Pilgrim
是的,我也倾向于直接复制代码块。我想我会尝试一段时间来应用这种技术,以便我可以得到一个更公正的意见。 - GManNickG
5
绝对不行。即使您所描述的情况也很糟糕。 - Martin York
2
很好。我使用#if 1 ... #else ... #endif来在两个代码块之间切换。然后在1和0之间切换。我真的不需要语法高亮告诉我哪个版本已启用。 - Steve Jessop

17

糟糕的做法。在任何生产质量的代码中,都不应出现无用代码。如果旧的、无用的代码确实适用于某些情况,则应将其重构为可使用配置开启/关闭的代码,而不是重新编译。


1
这个问题实际上并没有说它是在生产代码中。我认为我可能在错误报告中使用了这种东西。 - Tom Hawtin - tackline
1
通常当有人询问某种做法是否好时,他们并不是在问是否存在某些特殊情况下这种做法是可以接受的。我猜测楼主想知道的是这种做法是否应该经常使用。在我看来,不应该。 - tvanfosson

16

我宁愿做

#ifdef DOIT_ONE_WAY
do one way
#else
do another way
#endif

但这只是个人口味问题


2
即使这是不好的实践,你应该在头文件中使用#if块来设置宏。代码然后使用宏(类似于函数)而没有任何#if,以便真正的代码易于阅读。然后宏只需处理实现细节。 - Martin York
对于实际的宏来说,这肯定是不好的做法,但比注释掉代码要好得多。当然,tvanfosson是正确的 - 应该在一开始就没有死代码。 - user3458

3

这让我感到困惑,需要花费时间来解析,所以我不认为这是一个好的实践。

我认为,Kane的回答中提到的任何切换的便利性都不值得。开发者浏览器应该负责处理注释的便利性。

对我来说,这只是令人困惑的,绝对不是标准。


2

这很令人困惑,也缺乏编程美学。一个好的方法是使用C预处理器,并像下面这样编码:

#if 0

code block disabled

#endif

code block enabled

3
更好的做法是,#ifdef TEMPORARILY_REMOVED_BECAUSE_I_AM_TESTING_SAYS_JAF 禁用的代码块 #endif这样,当你在提交前忘记删除该块时,下一个人就会知道为什么它被禁用,并决定是否重新启用它。 - Jeremy Friesner

2
每个人都有自己的做事方式... 我猜他们这么做是为了让你只需在第一个注释前添加 / 并删除最后一个 /,然后就可以切换注释块到另一组指令。
编辑:实际上,你只需要在第一个注释前添加 /,然后再将其删除即可切换回来。

1

我认为Arkadiy提到的这种方法和#ifdef方法都不好,因为在多文件搜索“do something”时,代码看起来像是实时的,但根据前面的行可能并不是。

如果代码有效,则#ifdef平台依赖性肯定会这样做,

但如果只是测试代码等,我更喜欢突出显示所有内容并插入C++ //注释,在VisualStudio中为Ctrl-K,C


0

这只是在两个代码块之间轻松切换的简单方法(正如Kane Wallmann所说)。

在生产代码中留下它可能并不好(只需将其删除并从源代码控制获取即可),但在开发过程中,这是一个方便的方式,可以快速切换两种实现(或存根一些代码等)。


0

并不一定是不好的实践,但是你需要预料到读者对你的代码会有不同的反应。例如,我认为这很酷,但我永远不会将这样的代码提交到代码库中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接