Сколько аргументов конструктора слишком много?

Я вижу, что некоторые люди refactor рекомендуют семь в качестве parameter верхнего предела. Очевидно, неправда, что parameters люди могут держать в голове coding-standards сразу семь вещей; они могут params запомнить только четыре (Сьюзан refactoring Вайншенк, 100 вещей, которые каждый дизайнер должен знать о людях, 48). Тем не менее, я coding-convention считаю, что четыре находятся coding-convention на высокой околоземной орбите. Но coding-convention это потому, что Боб Мартин parameters изменил мое мышление.

В Чистом коде дядя coding-convention Боб приводит доводы в пользу refactoring трех как общего верхнего param предела для количества параметров. Он constructor делает радикальное заявление coding-convention (40):

Идеальное количество parameter аргументов для функции - ноль coding-standards (ниладическое). Далее идет params один (монадический), за которым coding-convention следуют два (диадический). По clean-code возможности следует избегать clean-code трех аргументов (триадных). Более coding-convention трех (полиадических) требует parameters особого обоснования - и их coding-style в любом случае не следует constructor использовать.

Он говорит это code-style из-за удобочитаемости; но refactoring также из-за тестируемости:

Представьте coding-standards себе трудность написания parameters всех тестовых примеров, чтобы parameter убедиться, что все различные refactoring комбинации аргументов работают clean-code правильно.

Я рекомендую вам params найти копию его книги и прочитать params его полное обсуждение аргументов parameter функций (40–43).

Я согласен parameter с теми, кто упомянул принцип coding-style единой ответственности. Мне clean-code трудно поверить, что класс, которому refactoring требуется более двух или code-style трех значений / объектов coding-style без разумных значений по ctor умолчанию, на самом деле constructor несет только одну ответственность, и coding-style ему было бы не лучше, если parameter бы другой класс был извлечен.

Теперь, если params вы внедряете свои зависимости param через конструктор, аргументы refactoring Боба Мартина о том, насколько parameters легко вызвать конструктор, не refactoring так сильно применимы (потому constructors что обычно в вашем приложении refactor есть только одна точка, где clean-code вы подключаете это, или у clean-code вас даже есть фреймворк, который refactoring сделает это за вас). Однако parameter принцип единой ответственности ctor по-прежнему актуален: когда clean-code у класса есть четыре зависимости, я params считаю, что это запах того, что code-style он выполняет большой объем param работы.

Однако, как и во всем, что parameter связано с информатикой, несомненно, существуют param допустимые случаи наличия coding-convention большого количества параметров refactoring конструктора. Не искажайте constructor свой код, чтобы избежать refactor использования большого количества clean-code параметров; но если вы все constructor же используете большое количество params параметров, остановитесь constructor и подумайте, потому что это constructors может означать, что ваш код coding-standards уже искажен.

parameters

refactoring

constructor

coding-style

2022-11-08T07:44:13+00:00
Вопросы с похожей тематикой, как у вопроса:

Сколько аргументов конструктора слишком много?