Является ли "слишком много зависимостей" запахом кода?

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

Когда я упомянул об этом коллеге, он утверждал, что это сам по себе запах кода. Он предложил мне "разбить" этот класс.

Сам класс уже относительно мал; просто случается так, что для выполнения основной работы используется несколько соавторов. Он состоит из короткого (~12 строк, включая пробелы) метода, который вызывает 4 соавтора. Вы согласны или не согласны с утверждением, что это кодовый запах? Есть ли какая-то объективная мера, которую я могу использовать, чтобы определить, сколько зависимостей "слишком много"? Как это относится к таким показателям, как цикломатическая сложность, сцепление, связь и т. Д.?

1 ответ

Решение

С точки зрения только вашего вопроса, как вы его сформулировали, да, это так. Но это немного сложнее, если вы придете к этому коду через 6 месяцев, сможете ли вы его за первые 2-3 минуты после прочтения кода? Требуется ли вам взглянуть на другие части кодовой базы, чтобы понять это? Требуется ли для модификации соавторов изменение этого класса? Сможете ли вы объяснить этот класс другому инженеру (особенно новым инженерам) в 2-4 предложениях? Все это помогает в решении этого.

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

Другие вопросы по тегам