Лучше ли создавать методы с длинным списком параметров или переносить параметры в объект?
Лучше ли (лучше всего) создавать методы с длинным списком параметров или переносить параметры в объект?
Я имею в виду, скажем, у меня есть тип данных клиента с длинным списком свойств, и я хочу обновить все свойства сразу. лучше делать что-то вроде
public int Update(int id, string name, string surname, string streetAddress, string streetAddress2, string postcode, string town, string city, string nationality, string age, string gender,string job)
{ }
или обернуть все свойства объекта и сделать что-то вроде
public int Update(Client client)
{ }
спасибо
Ответы
Ответ 1
В своей книге Рефакторинг Мартин Фаулер явно выдает списки длинных параметров как запах кода и предлагает рефакторинг таких методы использования объекта параметра.
Вариант заключается в том, чтобы определить, как эти многие параметры группируются сами, и создать более одного объекта параметров, которые представляют каждую такую группу.
Преимущество объекта Parameter заключается в том, что код становится более читаемым, когда вы можете указать объект параметра коммуникативное имя. Может оказаться, что объект Parameter представляет собой реальную концепцию домена, и следующая вещь, которую вы можете сделать, - это начать перемещение поведения в нее.
Ответ 2
Я бы сказал, что лучше использовать объект. Если вы просматриваете Stack Overflow, есть много других сообщений по этому вопросу
Ответ 3
Обычно вы должны использовать объект. Обычно, когда у вас есть большое количество параметров для метода, эти параметры описывают конкретное "состояние". Ваш примерный код указывает, что я имею в виду.
Ответ 4
Как насчет использования поставщика значений на один компонент по сравнению с входными параметрами (в этом случае сгруппированы).
Спасибо