Сколько работы должно быть сделано в конструкторе?

Если операции, которые могли занять время, выполняются в конструкторе или если объект создается и затем инициализируется позже.

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

Что изящное решение к этому?

50
задан Raedwald 17 October 2019 в 04:34
поделиться

2 ответа

Отличный вопрос: приведенный вами пример, где Объект 'Directory' имеет ссылки на другие объекты 'Directory'.

В этом конкретном случае я бы переместил код для создания подчиненных объектов из конструктора (или, возможно, сделал бы первый уровень [непосредственные дочерние элементы] как рекомендует другой пост здесь), и иметь отдельный механизм «инициализации» или «сборки»).

В противном случае существует еще одна потенциальная проблема - помимо производительности - это объем памяти:

0
ответ дан 7 November 2019 в 10:42
поделиться

Я голосую за тонкие конструкторы и в этом случае добавляю к вашему объекту дополнительное «неинициализированное» поведение состояния.

Причина: если вы этого не сделаете, вы навязываете всем своим пользователям либо также иметь тяжелые конструкторы или динамически размещать ваш класс. В обоих случаях это может рассматриваться как неприятность.

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

0
ответ дан 7 November 2019 в 10:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: