【发布时间】:2010-11-02 13:12:40
【问题描述】:
我的同事对他提出的问题(1、2)的评价是 0 比 2,所以我想我会给他一个追赶的机会。
我们最近的分歧是关于在声明中将“const”放在何处的样式问题。
他认为它应该放在类型前面或指针后面。原因是这是其他人通常会做的事情,而其他样式很容易混淆。因此,指向常量int 的指针和指向int 的常量指针分别为:
const int *i;
int * const i;
但是,我还是很困惑。我需要一致且易于理解的规则,而我能够理解“const”的唯一方法是它在它正在修改的东西之后。有一个例外允许它在最终类型之前,但这是一个例外,所以如果我不使用它对我来说会更容易。
因此,指向常量int 的指针和指向int 的常量指针分别为:
int const * i;
int * const i;
另外一个好处是,以这种方式做事可以让更深层次的间接性更容易理解。例如,指向int 的常量指针的指针显然是:
int * const * i;
我的论点是,如果有人只是按照他的方式学习,他们将毫不费力地弄清楚上述内容的用途。
这里的最终问题是,他认为将const 放在int 之后是如此丑陋,对可读性如此有害,以至于应该在样式指南中禁止它。当然,我认为如果指南应该建议按照我的方式进行操作,但无论哪种方式,我们都不应该禁止一种方法。
编辑: 我得到了很多好的答案,但没有一个能真正直接解决我的最后一段(“终极问题”)。很多人都在争论一致性,但在这种情况下,这是不是很可取,以至于禁止另一种方式是个好主意,而不是仅仅阻止它?
【问题讨论】:
-
还有一点很重要,什么更重要?它是一个 int 的事实,还是它是常量的事实?
-
@rlbond:这是一个很好的问题……太好了,我不确定我能不能回答。
-
@T.E.D.关于您的编辑:样式指南的意义何在?这是开发人员在闲暇时忽略的建议,还是他们应该遵循的规则?如果你只是不鼓励特定的风格,那不就意味着这是一个建议吗?
-
@atk:在这种情况下,我相信是后者。
-
@T.E.D.你为什么只在 C++ 上下文中问这个问题?我在这里看不出与 C 的区别。
标签: c++ c pointers coding-style constants