Слишком много аргументов в вызовах методов - PullRequest
4 голосов
/ 07 января 2011

В последнее время я разрывался при попытке написать классы относительно количества запрошенных параметров.

Пример очень простого конструктора:

Burger(bun, meat, cheese, lettuce)
    this.bun = bun
    this.meat = meat
    ...

Vs

Burger(grocery)
    this.bun = grocery.bun
    this.meat = grocery.meat
    ...

Оба способа являются допустимыми подходами.Первый способ показывает, что именно входит в бургер, разбивает аргументы на более общие классы, что делает его менее связным, и я думаю, что в целом его проще тестировать, потому что граф объектов проще.

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

Я хотел бы знать, какой путь будет рекомендован в такой ситуации?Пойдите для более чистого, но более связанного кода, или более многословного пути.

1 Ответ

5 голосов
/ 07 января 2011

передача 4+ параметров любому методу или конструктору не является хорошей идеей или хорошим дизайном.

Я помню, что Джошуа Блох ( Effective Java ) рекомендует Builder Pattern к этой ситуации (Элемент 2)

Элемент 2 : Рассмотрим строителя, когда сталкиваемся со многими параметрами конструктора

...