Мой вопрос не «что делать со слишком большим количеством параметров», я нашел ответ в How to avoid "too many parameters" problem in API design?. то, что мне нужно, является дополнением информации об осуществлении.«Слишком много параметров» сохраняют частные переменные или заменяют их классом параметров
У меня был класс
internal class SomeClass
{
private string value1;
private DateTime value2;
private SomeEnum value3;
// and the same until valueALot
internal SomeClass(string val1, DateTime val2, SomeEnum val3, ...)
{ }
}
И я заменил параметры конструктора с новым SomeParameters класса
internal class SomeParameters
{
internal string value1 { get; set; }
internal DateTime value2 { get; set; }
internal SomeEnum value3 { get; set; }
}
internal class SomeClass
{
internal SomeClass(SomeParameters parameters)
{ }
}
Мой вопрос: В SomeClass
классе я должен держать отдельные переменные и присваивать им SomeParameters или я должен заменить их экземпляром класса SomeParameters
?
Решение 1:
internal class SomeClass
{
private string value1;
private DateTime value2;
private SomeEnum value3;
internal SomeClass(SomeParameters parameters)
{
value1 = parameters.value1;
value2 = parameters.value2;
value3 = parameters.value3;
}
}
Решение 2:
internal class SomeClass
{
private SomeParameters _parameters;
internal SomeClass(SomeParameters parameters)
{
_parameters = parameters;
}
}
Решение 2 кажется более легким и избежать избыточности, но я не знаю, если это хорошая практика. Может ли решение 2 решить проблемы безопасности?
Возможно, самое простое решение является хорошим, и я задаю себе слишком много вопросов.
Спасибо за ваши отзывы
как вы представляете его, кажется, что 'SomeClass' * * является параметр обертка объект, который делает' SomeParameters' довольно лишними. – Abion47
Если вы сохраняете значения в экземпляре 'SomeParameters', вы должны сделать копию этого экземпляра. В противном случае пользователь класса может впоследствии изменить значения в данном экземпляре ('SomeParameters' является ссылочным типом), и вам может не потребоваться изменить значения в вашем классе извне. –
@ Abion47 Итак, я представляю это плохо, SomeClass много чего делаю и не является оберткой –