Объект ничего не делает после создания экземпляра - PullRequest
3 голосов
/ 30 июня 2009

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

После этого я никогда больше не вызываю объект, чтобы что-то сделать - я не передаю его другим объектам - после того, как он создан, он выполняет свои функции, и все хорошо. Это неправильный способ сделать это?

Ответы [ 3 ]

6 голосов
/ 30 июня 2009

Да, делать значительную работу в конструкторе, как правило, плохая идея.

Не могли бы вы сделать это через статический метод? Статический метод может создать экземпляр суперкласса, а затем делать все, что ему нужно. Единственная проблема этого подхода заключается в том, что суперкласс вызывал виртуальные методы во время своего конструктора, но это сам по себе запах кода ...

3 голосов
/ 30 июня 2009

Это может быть запах суперкласса, а не подкласса.

Зачем тебе это нужно? Есть ли в суперклассе функциональность, которая доступна публично только через конструктор? Если это так, то вам, вероятно, нужно создать экземпляр для доступа к этой функциональности. Но может быть лучше скрыть это поведение за обычным методом, а не конструктором подкласса.

Но это все же не так хорошо, как исправление суперкласса.

2 голосов
/ 30 июня 2009

Должна существовать цель для объекта. Конструктор - это всего лишь инструмент для подготовки объекта, поэтому он может работать по мере необходимости после создания. Если вы не используете объект, вам также не нужно его создавать.

Создание ненужных объектов потребляет память, а также заставляет сборщик мусора выполнять больше работы, поэтому вам следует подумать о переписывании кода (возможно, статическим методом, как это уже было предложено).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...