好的做法:仅修改功能参数?

时间:2011-02-23 15:44:45

标签: c++

说,我开发了一个复杂的应用程序:在对象成员函数中,我应该只修改那些作为参数传递给成员函数的对象,还是可以访问和修改我有权访问的任何其他对象(比如public或静态对象)?

从技术上讲,我知道可以修改我有权访问的任何内容。我在询问良好做法

有时候,作为一个参数传递我将会访问和修改,特别是如果我知道对象成员函数不会被其他任何人使用,而是我。感谢。

2 个答案:

答案 0 :(得分:6)

全局状态永远不是一个好主意(虽然它有时更简单,例如日志记录),因为它引入了未在接口中记录的依赖关系并增加了组件之间的耦合。因此,应该不惜一切代价避免修改全局状态(例如static变量)。 注意:全局常量完全没问题

在C ++中,您拥有const关键字,用于记录(并使编译器强制执行)可修改的内容和不可修改的内容。

const方法保证对象的可见状态不受影响,const引用或值传递的参数也不会被触及。

只要记录完毕,就可以了......您应该努力在类接口中使用非const方法,并在方法中使用非const个参数。

答案 1 :(得分:2)

如果您有一个包含成员变量的类,那么在成员方法中修改这些成员变量是完全可以接受的,无论这些成员变量是私有,受保护还是公共变量。这是想要的是封装。

实际上,修改传递给成员方法的变量可能是一个坏主意;返回一个新值是您想要的,或者从单独的成员方法中获取新值。