Запах кода логики конструктора зависит от типа кода или количества? - PullRequest
2 голосов
/ 10 декабря 2010

Логика в конструкторе - это запах кода. Однако это количество кода в конструкторе, который является плохим, или тип кода (есть определенный код, который будет разрешен в конструкторе?)?

Спасибо

Ответы [ 2 ]

2 голосов
/ 10 декабря 2010

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

Например, один из конструкторов FileStream принимает путь к файлу и режим файла в параметре и выдает исключение, если файл не существует.

IMO, если ваш код является логикой валидации / инициализации, он полностью допустим в конструкторе, даже если он представляет большой объем кода. Что может быть подозрительно, так это код в конструкторе, который не связан с проверкой контекста или инициализацией экземпляра.

0 голосов
/ 10 декабря 2010

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

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