2009-06-03 3 views
1

Сколько строк кода (LOC) нужно считать крупным проектом? Как насчет только одного человека, пишущего его?Использование LOC для определения размера проекта

Я знаю, что эта метрика сомнительна, но для одного разработчика существует значительная разница между 1k и 10k LOC. Обычно я использую пространство для удобочитаемости, особенно для операторов SQL, и я стараюсь уменьшить количество LOC для целей обслуживания, чтобы следовать как можно больше лучших практик.

Например, я создал единый diff кода, который я изменил сегодня, и это было более 1k LOC (включая комментарии и пустые строки). Является ли «модифицированный LOC» лучшим показателем? У меня есть ~ 2k LOC, так что удивительно, что я модифицировал 1k. Я предполагаю, что переписывание считается как удалением, так и добавлением, которое удваивает статистику.

+1

Обратите внимание, что LOC относится к строкам кода - пустые строки, вставленные для удобочитаемости, а строки комментариев игнорируются для целей этой метрики. – 2009-06-03 08:12:05

+1

LOC действительно не подходит для определения того, когда проект «большой».Я бы подумал, что количество модулей, их сложность и взаимозависимость между ними как лучшая метрика, но я не думаю, что есть один фиксированный ответ на вопрос о том, когда проект большой. Вы пытаетесь решить конкретную проблему, или это более общий вопрос? –

+0

@Banang: Общее мнение о том, что люди считают большим. – 2009-06-03 08:35:07

ответ

3

Немного менее бесполезная метрика - время компиляции.
Если ваш проект занимает больше, чем ... скажем, 30 минут, чтобы собрать, это большой :)

+1

В C++ 30 минут время компиляции указывает на гораздо меньший проект, то скажем в Delphi. –

2

Использование Steve Yegge в качестве ориентира в верхнем диапазоне шкалы, скажем, что 500k lines of code есть (более?) Максимум может поддерживать один разработчик.

Более серьезно; Я думаю, что после того, как вы нажмете 100 000 LOC, вы, вероятно, захотите начать поиск повторных факторингов перед расширением кода.

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

1

По-моему, это также зависит от дизайна вашего кода - я работал над проектами в диапазоне 1-10K, который был так плохо разработан, что он походил на действительно большой проект.

Но LOC действительно интересный вопрос для кода? ;-)

+1

LOC не может быть * абсолютной * мерой сложности кода, но это разумное приближение, особенно если вы уделяете больше внимания величине, чем точное значение (1k против 10k против 100k) – jerryjvl

2

Возможно, еще одним измерением для этого будет измерение COCOMO - хотя оно, вероятно, так же бесполезно, как и LOC.

Один разработчик мог выполнять только органические проекты - «небольшие» команды с «хорошим» опытом, работающим с «менее жесткими» требованиями.

В этом случае Эффорд применяется в человеко-месяцев рассчитывается как

2.4 * (kLOC)^1.05 

При этом, 1kLOC потребуется 2,52 человеко-месяц. Вы можете использовать несколько факторов, чтобы уточнить это на основе атрибутов продукта, оборудования, персонажа и проекта.

Но все, что мы сейчас сделали, спроектировано LOC для измерения времени. Здесь вам снова нужно решить, считается ли большой двухмесячный или 20-месячный проект.

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

+0

kLOC на 1000 LOC? У меня было 1k, написанное за один день, а затем очищено и отлажено еще через 2 дня с дополнительными дополнениями, чтобы довести его до 1kLOC. Эта формула кажется ошибочной. Мой текущий проект - 4kLOC (после очистки). Конкретный 500LOC взял меня на 2 недели, чтобы узнать и написать с тоннами gotchas (я ненавидел этот ...), поэтому я не уверен, как эта формула должна применяться. Используется ли это только в отношении линий, с которыми у вас нет предыдущего опыта? – 2010-03-14 04:58:59

+1

Это относится к разработке новых проектов, но включает в себя все этапы проекта. Он был создан в 2000 году, поэтому, возможно, была достигнута определенная производительность. COCOMO был рассчитан с помощью посмертного анализа многих проектов. Это относится только к командам, а не к отдельным разработчикам. Хорошие разработчики в 10 раз быстрее, чем плохие, поэтому ваш опыт может не применяться. Можно также принять во внимание определение LOC: ничего не созданного, собственноручно написанных строк строки. И, конечно, это зависит от языка программирования (ASM-C). Поэтому и LOC, и COCOMO кажутся бесполезными. –