рефакторинг переменных доступа автоматически

Я изменил доступ к переменным класса с общедоступных на частные,

затем создал добытчики & сеттеры (100 переменных)

некоторое время спустя, после того, как это будет завершено,

Как я могу автоматизировать, обращаясь к любой из этих переменных напрямую, чтобы установить / получить, не просматривая каждую из этих 100 переменных. Иногда к большому проекту к переменной обращаются почти везде, так что это довольно сложно сделать вручную.

Я использую Eclipse IDE, проект C ++

0

Решение

Если ваш проект действительно большой & Вы встраиваете в него частный элемент управления, вам может быть полезно пойти по другому пути: вообще не реализовывать геттеры … просто реализуйте сеттеры. Определить const публичная ссылка на каждую частную переменную-член, которая служит для нее «получателем». Любой код, который читает эти данные, может остаться без изменений; вам нужно только обновить код, который наборы эти переменные, которые могут быть гораздо менее болезненными для обновления. Если вы пойдете по этому пути, вам придется инициализировать эти публичные ссылки в конструкторах, например так:

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>() функция, которая позволит вам написать метод установки, который будет выглядеть так же, как если бы вы просто обращались к элементу данных, а не вызывали для него метод; это привело бы к большему количеству аккуратного кода, чем вы получаете с помощью методов установки.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]