重构变量自动访问

时间:2013-09-23 18:48:50

标签: c++ eclipse oop encapsulation automated-refactoring

我已将类变量的访问权限从公共变为私有,

然后创造了吸气剂& setters(100个变量)

之后的某个时间,完成后,

如何自动化,直接访问任何这些变量来设置/获取而无需遍历这100个变量中的每一个。有时在整个大项目中几乎所有地方都会访问变量,因此手动操作有点困难。

我正在使用Eclipse IDE,c ++项目

1 个答案:

答案 0 :(得分:3)

如果你的项目真的很大&你正在将私有成员控制改造成它,你可能会发现选择其他途径是有帮助的:根本不要实现getter ....只需实现setter。为每个底层私有成员变量定义const公共引用,该变量充当它的“getter”。任何读取此数据的代码都可以保持不变;您只需要更新设置这些变量的代码,这可能会使更新变得更加痛苦。如果你走这条路线,你将不得不在构造函数中初始化这些公共引用,如下所示:

class fred {
public:
    fred() : stone(_stone) {} // every constructor must initialize all public references like this
    void set_stone(int s) { _stone = s; }
    int get_stone() { return _stone; } // Instead of this (or, in ADDITION to this), do this....
    const int& stone; // const public reference to internal private data member
private:
    int _stone;
}

您可以永久地使用该解决方案,或者直到您(“某天”)完成所有获取者的更新。个人对于其内部数据的数据类型非常明显的类和不会改变,无论如何我更喜欢这个解决方案,因为用它编写的代码更容易阅读。我希望 C ++有一个operator classmember_setter<membername>()功能,允许你编写一个看起来就像你只是访问一个数据成员而不是调用它的方法的setter方法;这会产生比你用setter方法更整洁的代码。