我目前面临的是一些由大约400个文件和200个类组成的高级程序员编写的C ++项目。
代码精心编写,工作正常,稳定。
虽然我正在添加一些功能,但对我而言,通常的做法是关注const
- 正确性。
但是如果我开始声明我的新成员函数const
,那么为了使事情有效,适应旧代码是没有尽头的。
const
- 正确性
进入这段代码?答案 0 :(得分:5)
Const正确性是静态类型的一种附加层,旨在使开发成熟,可靠和健壮的代码变得更加容易。你说你已经有了后者。在这种情况下,从实用的角度来看,在这样的代码库中强制执行const正确性似乎并没有显着的增值。
答案 1 :(得分:2)
值得努力......除非你有更重要的事情要做。
答案 2 :(得分:2)
我是否应该花费一定的时间将
const
- 正确性引入此代码?
如果您认为可以在合理的时间内完成所有工作,请务必确定。 const
- 正确性是一件好事,所以如果您可以调整代码库以正确使用它,那么这永远不会是坏事。
这一切都取决于你有多少时间可用以及你可以做的其他事情,更多的是项目管理,更适合programmers.SE。
更糟糕的是,我必须触摸并改变旧的成熟代码,并向老年人解释我在代码审查期间所做的工作。值得吗?
对于他们(并且,通过扩展,对其他所有人来说)当然是值得的。听起来他们会在代码审查中学到很多东西,这太棒了!
正如molbdnilo正确地指出的那样,这是一个很大的变化,你应该在开始之前进行小组讨论。这比在两周后完成代码审查更合适。当你已经完成时。
答案 3 :(得分:1)
这是一个棘手的问题。改进const正确性是一件非常重要的事情 工作(正如你所注意到的)。如果代码是干净的 可维护的,可能不应该轻易进行。在另一 在某些情况下,const正确性几乎是必不可少的 如果所有编译器都强制执行关于不初始化a的规则 用临时的非const引用。
如果您不是代码的唯一所有者,那么该做的事情就是 与其他相关人员讨论这个问题,共同决定 是否重要,如果有的话,编制必要的时间 被认为是重要的。你不应该做的只是开始介绍它 你自己,作为你被授权做的变化的“副作用”。 这是一个项目层面的决定。
答案 4 :(得分:0)
答案 5 :(得分:0)
是。一旦你克服了将当前代码转换为const的障碍,它就变成了第二天性。
此外,如果您开始遵循像MISRA这样的规范,它需要您的代码是正确的(在许多其他事情中)。
答案 6 :(得分:0)
强制执行const-correctness有两个技术步骤。
在开始之前,您需要让您的团队成员参与进来,并解释const
- 正确性的好处。如果你无法说服你的队友,那真的不值得推出......
现在,由于我们使用的是StackOverflow,而不是SE,我宁愿专注于技术方法。
这两个步骤来自以下事实:
const
对象const
函数
const
函数
因此:
const
const
- ify变量/ parameters / attributes 第一步是非侵入性的并且已经产生了它自己的好处,因为它可以防止在标记方法中对类的内部属性进行意外修改。
即使您的团队遇到轻微的阻力,您仍然可以将您开发或触摸的方法标记为const
而不会对团队其他成员造成任何阻碍。