Каково хорошее соотношение между классом и строками кода для объектно-ориентированных языков? [закрыто]

StackOverflow https://stackoverflow.com/questions/186070

Вопрос

Каково хорошее соотношение числовых классов к строкам кода для объектно-ориентированного языка (например, C ++, C #, Java и тому подобное)?

Многие люди, в том числе менеджеры, используют традиционную метрику LOC (строки кода) для измерения сложности программного обеспечения, в то время как многие разработчики с жесткой варкой, ориентированные на объект, скажут, что LOC бесполезен, так как количество классов имеет значение. И лично я считаю, что классы могут быть более разумной метрикой сложности, но без метрики LOC реальную сложность этих классов (количество полтергейстов и богов там) трудно оценить.

Таким образом, кто-нибудь знает, что может быть хорошим соотношением для некоторых довольно хорошо закодированных программ?

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

Редактировать. Кто-нибудь знает о соотношениях для некоторых крупных проектов OSS, таких как Firefox, Apache, Webkit и т. д ...?

Это было полезно?

Решение

LOC или NLOC не являются хорошим показателем качества или работоспособности вашего кода. Я рекомендую использовать статический анализ кода NDepend (для вас .net), чтобы увидеть, насколько хорошо разработано ваше решение.

Я считаю, что LOC - это хорошее измерение только на уровне метода. То есть, мне, как правило, нравятся мои методы для размещения на экране (без мелких шрифтов). Другие показатели, такие как Cyclomatic Complexity и Code Coverage (для вас, TDDers), в дополнение к вашим модульным тестам, помогут лучше понять, насколько здорова ваша кодовая база.

Другие советы

На этот вопрос не будет хорошего, окончательного или удовлетворительного ответа. Однако я скажу, что по моему опыту количество строк кода на класс уменьшается с увеличением опыта объектно-ориентированного программирования.

Большинство людей, которые не изучали принципы объектно-ориентированного проектирования, склонны иметь классы с большим количеством строк кода. Люди с большим объектно-ориентированным опытом имеют тенденцию иметь меньше строк кода на класс, но классов будет намного больше. И конечно, оба будут жаловаться друг на друга: -).

Если вы действительно ищете эмпирическое правило, я бы сказал, что любой класс, который не может быть распечатан на одном листе бумаги с читаемым разрешением, возможно, слишком длинный и должен быть реорганизован. Ваша целевая отметка может быть порядка 100-200 строк, но, на мой взгляд, с количеством страниц немного легче справиться.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top