Вычеркнуть нулевую проверку для переменной, установленной только одним конструктором - PullRequest
0 голосов
/ 07 апреля 2010

В приведенном ниже классе только второй конструктор принимает объект ForumThread.В противном случае он имеет значение null.
IncrementViewCount(), LockForumThread(), а другие методы зависят от того, что _ft не равно NULL.

Не извлекая пустую проверку в новый закрытый метод, есть ли какой-нибудь более простой рефакторинг, который я могу сделать, или лучший дизайн для защиты от использования неправильного конструктора с этими зависимыми методами?*

Ответы [ 2 ]

0 голосов
/ 07 апреля 2010

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

0 голосов
/ 07 апреля 2010

Если вы реализуете свойство для ForumThread, вы можете выбросить исключение из get, если оно равно NULL.Это может создать метод в базовом IL, но это не новый частный метод в вашем классе (плюс - что плохого в том, чтобы иметь новый метод?)

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