В настоящее время я работаю над независимым проектом, так что я не могу позволить себе такую роскошь, как человеческое тестирование или проверка внешнего кода - однако я не вижу трудных ошибок в моем текущем коде (я их исправляю так, как вижу их) и в большинстве случаев это просто неправильные имена полей и тому подобное, вещи, которые вы исправляете через минуту или две), и я проверяю это после реализации любой функции, прежде чем нажать ее. В последнее время мой номер LOC составлял около 400 в день (для записи, это C #), и я не только внедряю новые системы, но и переписываю то, что уже написал, и исправляю некоторые ошибки.
Должен ли я быть обеспокоен? Является ли это признаком того, что мне нужно остановить и просмотреть весь код, который я писал до этой даты, и провести его рефакторинг?
источник
Ответы:
LOC, вероятно, является одной из наиболее злоупотребляемых метрик, и, как следствие, это, вероятно, одна из более бесполезных мер качества кода и еще более бесполезная оценка усилий по программированию.
Да, это смелое заявление для меня, и нет, я не могу указать вам на исследования, подтверждающие мою точку зрения. Тем не менее, с трудом заработав, я могу заявить, что когда вы начинаете беспокоиться о том, сколько кода вы написали, вы, вероятно, беспокоитесь о неправильных проблемах.
Сначала вам нужно спросить себя, что вы пытаетесь измерить или доказать, и является ли это доказательство просто интересным, или для поддержки более широкого улучшения качества, и где вам нужно использовать эту информацию, чтобы получить бай-ин от вашей команды. / управление, чтобы сделать что-то с этим.
Одна из вещей, для которых я склонен использовать LOC - это проверка работоспособности. Если я нахожу, что пишу много кода, меня больше интересует LOC для метода или LOC для класса, а не LOC для всех. Эти измерения могут быть индикаторами того, что вам нужно провести дальнейший рефакторинг, если вы чувствуете небольшую невнимательность к тому, насколько хорошо должен быть составлен ваш код. Очень большие классы могут быть реорганизованы в несколько более мелких классов, а длинные многострочные методы могут быть разбиты на несколько методов, других классов или даже могут указывать на некоторое повторение, которое можно удалить. Обратите внимание, что я использовал слово «мог» несколько раз там.
Реальность такова, что LOC предоставляет только возможный индикатор, и нет реальной гарантии того, что ваш код может потребоваться изменить. Реальный вопрос, который нужно задать, заключается в том, будет ли код вести себя так, как требуется и как ожидается. Если это так, то ваш следующий вопрос заключается в том, сможете ли вы легко поддерживать код, и будет ли у вас время либо сейчас, либо в будущем, чтобы внести изменения в работающий код, чтобы уменьшить затраты на обслуживание в будущем.
Часто большое количество кода означает, что у вас будет больше возможностей для поддержки позже, но иногда даже хорошо продуманный код может растягиваться до сотен строк кода, и да, иногда вы можете писать сотни строк кода в день. Однако опыт подсказывает мне, что, если я поддерживаю вывод сотен строк нового кода каждый день, то часто возникает риск того, что большая часть кода будет ненадлежащим образом вырезана и вставлена откуда-то еще, и это само по себе может указывать на проблемы с дублирование и обслуживание, но опять же, это не гарантия, поэтому я склонен полагаться на то, что мне подсказывают мой опыт и инстинкты в зависимости от того, как выполнялись поставленные задачи.
Лучший способ избежать дилеммы, поставленной в вашем вопросе ИМХО, - это забыть о LOC и проводить рефакторинг ВСЕГДА. Сначала напишите свой тест кода, внедрите, чтобы потерпеть неудачу, выполните рефакторинг, а затем посмотрите, что может быть подвергнуто рефакторингу, а затем улучшите код. Вы покинете задание, зная, что уже дважды проверили свою работу, и вам не придется беспокоиться о том, чтобы угадать себя в будущем. На самом деле, если вы используете тестовый подход, как я уже описывал, любое измерение LOC / день в вашем законченном коде действительно будет означать, что вы написали в 3-5 раз больше измеренной суммы, и эти усилия будут успешно скрыты вашим текущим рефакторингом. усилия.
источник
Вовсе нет - иногда вы исправляете трудную для поиска ошибку и меняете только одну строку. В другие дни вы добавляете новый код и пишете несколько тысяч строк.
Daily LOC ничего вам не говорит, кроме того, что задачи на этот день можно выполнить с помощью 400 строк кода.
источник
В некоторых из этих ответов не хватает смысла, вы не используете LOC в качестве меры производительности (если бы вы были так, вы бы не беспокоились о том, чтобы быть слишком «продуктивным»), то, что вы на самом деле делаете, беспокоится о качестве вашего кода, потому что Враг - это код , о котором стоит беспокоиться.
К сожалению, единственный способ узнать о качестве кода - это проверка кода, так как вы - команда из одного человека, это будет непросто, даже если вы прекратили проверять свой код (и вы действительно не хотите останавливаться, верно?) Просматриваете свою собственный код не покажет столько, сколько рецензент просматривает ваш код. Я бы посоветовал попытаться заставить кого-то еще просмотреть хотя бы часть вашего кода, чтобы вы могли определить, тратит ли ваш 400 LOC / день бред или нет. Даже независимый обзор однодневного кода поможет здесь
источник
Вы не должны беспокоиться о количестве LOC, которое вы производите в день.
Но вы должны быть обеспокоены
источник
LOC является «официальным» показателем производительности, но аргументы против его значения могут быть длинными (однако ORM может сгенерировать 50000 строк кода за 3 минуты, однако, если структура базы данных неверна, весь этот код может попасть в корзину).
Я предлагаю вам измерить свой прогресс, отслеживая% выполненных задач по сравнению со временем и% задач, запланированных к выполнению. Это то, что имеет значение. Клиенты платят за рабочий код, который обеспечивает ценность для бизнеса, а не за LOC.
Некоторые ссылки о LOC
Против: LOC - самая бессмысленная мера
Нейтрально в некоторой степени: Wiki-LOC
Pro (я не согласен с большинством из этого, но вы можете взглянуть): экономия масштаба и строк кода
источник
Вы также измеряете количество дубликатов кода ?
Если высокая производительность связана с тем, что в вашем коде много копий и вставок , вам следует беспокоиться.
Причина: в случае ошибки в вашем источнике копирования и вставки трудно и подвержено ошибкам исправить все случаи использования копирования и вставки.
источник
Если вы верите в красивый функциональный код, то это должно быть вашей единственной мерой
источник