Это хорошая практика для вызова методов из конструкторов? - PullRequest
3 голосов
/ 22 июня 2010

Это хорошая практика для вызова методов из конструкторов?

Ответы [ 3 ]

1 голос
/ 22 июня 2010

Я предполагаю, что вы говорите о других частных / публичных функциях класса, который инициализируется.

Как и везде, я бы сказал, разложение большого сложного поведения на подфункции является хорошей практикой.

Очевидным осложнением будут вызовы функций, которые полагаются на еще не инициализированное содержимое объекта.

Поскольку конструктор и другие функции в классе имеют одинаковую видимость (с точки зрения удобства сопровождения кода), я не думаю, что было бы неразумно говорить, что можно использовать другие функции, но необходимо для программиста чтобы избежать таких циклических зависимостей (например, виртуальных функций).

1 голос
/ 22 июня 2010

Я иногда помещаю вызов init () в конструктор моих объектов, если у меня есть много других перегруженных версий конструктора, которые должны инициализировать класс таким же образом. СУХОЙ.

0 голосов
/ 22 июня 2010

Нет, если эти методы являются виртуальными.В любом случае, просто будьте уверены, что если ваш конструктор потерпит неудачу (или один из методов, который он вызывает, потерпит неудачу), то ваш конструктор выполнит «перехват» для выполнения Dispose () для любых IDisposables, которые он выделил.

...