Коллега мой, как правило, проектировать классы, как:Где я могу найти краткий, хорошо написанный аргумент против этой инициализации анти-шаблона и, возможно, других?
class ImportantClass
{
public SomeClass ImportantField;
public SomeOtherClass OtherImportantField;
// etc.
}
Он не будет писать не конструктор. Тогда, где он конкретизирует этот тип его код будет выглядеть следующим образом:
ImportantClass x;
try
{
// This is problematic enough to begin with, as every field (which is public)
// is set manually, which causes code duplication wherever this type is
// instantiated as well as maintenance problems in the event new fields are
// introduced or internal implementation is changed.
x = new ImportantClass();
x.ImportantField = new SomeClass();
x.OtherImportantField = new SomeOtherClass();
}
catch (Exception ex)
{
// ...what's even worse: now x can easily be in a totally invalid state,
// with some fields initialized and some not.
HandleAnyException(ex);
}
Очевидно, что выше является упрощенным (и преувеличено) пример; но я думаю, вы понимаете.
Я не публикую это, чтобы критиковать моего коллегу; скорее, я хочу найти для него множество проблем в развитии таких классов и указать ему в правильном направлении. Я лично считаю, что этот дизайн, в то время как довольно бедный, является тем, что легко «исправлено».
Моя главная задача в том, что , если я хочу, чтобы убедить его, что будет важно для меня, чтобы иметь аргумент, который является сильным (хорошо поддерживается), легко понять, и кратким (он не будет хотеть прочитайте 2-страничное электронное письмо с сообщением, почему я думаю, что его код должен измениться).
Есть ли хорошие ресурсы, которые обеспечивают такие хорошо продуманные аргументы, устраняя недостатки этого и, возможно, других недобросовестных анти-шаблонов дизайна? Что-то вроде компендиума «ошибок в распространении программного обеспечения» было бы чрезвычайно полезно, если оно существует.
Примечание: Я понимаю, что просто говорить об этом является самым прямым и, возможно, наименее разрушительным способом дать совет; Я просто думаю, было бы неплохо также иметь этот ресурс, который я могу указать как ссылку, опять же, если такой ресурс существует.
Ничего себе. Они платят ему писать такие вещи? –