Это хорошая идея (из дизайна POV) встраивать вызовы конструктора для перегруженных методов стиля New или Factory? Это в основном для простых конструкторов, где каждая перегрузка основывается на предыдущем.
MyClass( arg1 ) {
_arg1 = arg1;
_otherField = true;
_color="Blue"
}
MyClass( arg1, arg2) : this(arg1) {
_arg2 = arg2
}
MyClass( arg1, arg2, arg3) : this(arg1, ar2) {
_arg3 = arg3;
}
Или с помощью методов Factory:
static NewInstance(arg1 ) {
_arg1 = arg1;
}
static NewInstance(arg1, arg2) {
f = NewInstance(arg1);
f._arg2 = arg2;
}
//... and so on
Я вижу несколько недостатков с обеих сторон
- Вложение скрывает то, что делает конструктор
- Не вложенность дублирует всю функциональность
Итак, это хорошая идея, или это заставляет меня за что-то, что я просто не вижу в качестве проблемы. По какой-то причине я чувствую себя неловко, делая это, главным образом потому, что он разделяет ответственность за инициализацию.
Изменить: @Jon Skeet. Теперь я вижу, почему это меня так беспокоило. Я делал это назад! Я написал все это и даже не заметил, это просто пахло. В большинстве других случаев, которые у меня есть (что я написал), делайте это так, как вы рекомендуете, но это, конечно, не единственное, что я сделал так. Я замечаю, что более сложные из них я сделал правильно, но простые, кажется, были неаккуратными. Мне нравятся микроредакции. Мне также нравятся акронимы!