Подтвердить что ты не робот

Когда класс слишком длинный?

Когда функция слишком длинная? - это подмножество этого вопроса, я думаю.

Что такое несколько хороших показателей для определения того, что класс слишком длинный?

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

4b9b3361

Ответ 1

Если у него есть более чем одна ответственность.

Позвольте мне процитировать Robert C. Martin Очистить код здесь:

Первое правило классов состоит в том, что они должны быть небольшими. Второй правило классов состоит в том, что они должны быть меньше этого.... С мы измеряли размер, подсчитывая физические линии. С классами мы используйте другую меру. Мы считаем ответственность. [Глава 10, стр. 136]

Ответ 2

Развертывание классa > : количество других классов, на которые опирается данный класс. Также показано, что квадрат этого показателя указывает, по крайней мере, объем поддержки, требуемый в функциональных программах (на основе файлов).

Цикломатическая сложность. Проверяет циклическую сложность с заданным пределом. Сложность измеряется количеством операций if, while, do, for,?:, Catch, switch, case и операторов && & & и || (плюс один) в теле конструктора, метода, статического инициализатора или инициализатора экземпляра. Это показатель минимального количества возможных путей через источник и, следовательно, количество требуемых тестов. Обычно 1-4 считается хорошим, 5-7 ок, 8-10 считают рефакторинг, а 11+ рефакторизуют сейчас!

Ответ 3

Не более 17 строк. Не больше, не меньше. Так что если до 17 строк, возврат каретки сделает трюк. Если его больше 17, вам нужно будет вызывать другие функции из функции.

Например:

public function myFunction() {
...
line 17: myFunctionPart2();
}

public function myFunctionPart2() {
...
line 17: myFunctionPart3();
}

И так далее.

Его довольно стандартная практика программирования.

Ответ 4

У одного класса должна быть только одна ответственность. Это лучший показатель, чем его длина. Таким образом, при разработке кода каждая единица вашего дизайна (тип или класс) должна отвечать только за одну вещь (независимо от того, что "одно" в вашем случае). Если вы сохраните его как можно проще, вы не получите беспорядка.

Ответ 5

Когда вы думаете, что теперь вам стало труднее управлять им и заставить вас застрять.

Ответ 6

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

Я бы не принимал количество строк как значимую метрику.