说,我开发了一个复杂的应用程序:在对象成员函数中,我应该只修改那些作为参数传递给成员函数的对象,还是可以访问和修改我有权访问的任何其他对象(比如public或静态对象)?
从技术上讲,我知道可以修改我有权访问的任何内容。我在询问良好做法。
有时候,作为一个参数传递我将会访问和修改,特别是如果我知道对象成员函数不会被其他任何人使用,而是我。感谢。
答案 0 :(得分:6)
全局状态永远不是一个好主意(虽然它有时更简单,例如日志记录),因为它引入了未在接口中记录的依赖关系并增加了组件之间的耦合。因此,应该不惜一切代价避免修改全局状态(例如static
变量)。 注意:全局常量完全没问题
在C ++中,您拥有const
关键字,用于记录(并使编译器强制执行)可修改的内容和不可修改的内容。
const
方法保证对象的可见状态不受影响,const
引用或值传递的参数也不会被触及。
只要记录完毕,就可以了......您应该努力在类接口中使用非const
方法,并在方法中使用非const
个参数。
答案 1 :(得分:2)
如果您有一个包含成员变量的类,那么在成员方法中修改这些成员变量是完全可以接受的,无论这些成员变量是私有,受保护还是公共变量。这是想要的是封装。
实际上,修改传递给成员方法的变量可能是一个坏主意;返回一个新值是您想要的,或者从单独的成员方法中获取新值。