O LOC é provavelmente uma das métricas mais abusadas e, como resultado, é provavelmente uma das medidas mais inúteis da qualidade do código e uma medida ainda mais inútil do esforço de programação.
Sim, é uma afirmação ousada para eu fazer, e não, não posso apontar para estudos que comprovem meu argumento. No entanto, posso afirmar com experiência adquirida que, quando você começa a se preocupar com a quantidade de código que escreveu, provavelmente está se preocupando com os problemas errados.
Primeiro, você deve se perguntar o que está tentando medir ou provar, e se essa prova é meramente desinteressante ou para apoiar uma melhoria mais ampla da qualidade e onde você precisa usar essas informações para obter o apoio de sua equipe. / management para fazer algo sobre isso.
Uma das coisas pelas quais costumo usar o LOC é um pouco de verificação de sanidade. Se eu me pego escrevendo muito código, fico mais interessado em LOC por método, ou LOC por classe, em vez de LOC em geral. Essas medidas podem ser indicadores que você precisará refatorar ainda mais se sentir um pouco de TOC sobre o quão bem fatorado seu código deve ser. Classes muito grandes podem precisar ser refatoradas em algumas classes menores, e métodos longos de várias linhas podem precisar ser divididos em vários métodos, outras classes, ou podem até indicar alguma repetição que pode ser removida. Observe que eu usei a palavra "pode" várias vezes lá.
A realidade é que o LOC fornece apenas um indicador possível e nenhuma garantia real de que seu código precise ser alterado. A verdadeira pergunta a fazer é se o código se comporta conforme necessário e conforme o esperado. Nesse caso, sua próxima pergunta é se você conseguirá manter o código com facilidade ou não e se terá tempo agora ou no futuro para fazer alterações no código de trabalho para reduzir as despesas gerais de manutenção no futuro.
Muitas vezes, muito código significa que você terá mais para manter mais tarde, mas às vezes até mesmo um código bem fatorado pode se estender a centenas de linhas de código e, sim, às vezes você pode escrever centenas de linhas de código em um dia. Entretanto, a experiência me diz que, se estou sustentando uma saída de centenas de linhas de novo código por dia, geralmente existe o risco de que grande parte do código tenha sido copiada e colada inadequadamente de outro lugar, e isso por si só possa indicar problemas com duplicação e manutenção, mas, novamente, isso não é garantia; portanto, tenho a tendência de confiar no que minha experiência e instintos me dizem com base em como as tarefas em mãos foram concluídas.
A melhor maneira de evitar o dilema colocado na sua pergunta IMHO é esquecer o LOC e refatorar o tempo todo. Escreva seu teste de código primeiro, implemente para falhar, refatorar para passar, depois veja o que pode ser refatorado lá e, em seguida, para melhorar o código. Você deixará a tarefa sabendo que já conferiu seu trabalho duas vezes e não ficará tão preocupado em adivinhar a si mesmo no futuro. Realisticamente falando, se você usar uma abordagem de teste como eu descrevi, qualquer medição LOC / dia em seu código completo realmente significa que você escreveu 3-5 vezes a quantidade medida, com esse esforço oculto com sucesso pela refatoração em andamento esforços.