Atualmente, estou trabalhando em um projeto independente, portanto não tenho o luxo de passar por testes em humanos ou pela revisão externa de código - no entanto, não vejo bugs difíceis no meu código atual (eu os corrigo como os vejo , e na maioria das vezes são apenas nomes de campos errados e coisas assim que você corrige em um ou dois minutos), e eu o testo depois de implementar qualquer recurso antes de enviá-lo. Ultimamente, meu número LOC era cerca de 400 por dia (para registro, é C #), e não estou apenas implementando novos sistemas, mas também reescrevendo coisas que já escrevi e corrigindo alguns bugs.
Devo ser incomodado? É o sinal de que preciso parar e revisar todo o código que escrevi até essa data e refatorá-lo?
c#
refactoring
Max Yankov
fonte
fonte
Respostas:
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.
fonte
Nem um pouco - alguns dias você está corrigindo um erro difícil de encontrar e muda apenas uma linha. Outros dias, você adiciona um novo código e escreve vários milhares de linhas.
O LOC diário não informa nada, exceto que as tarefas daquele dia podem ser realizadas com 400 linhas de código.
fonte
Algumas dessas respostas estão erradas, você não está usando o LOC como uma medida de produtividade (se estivesse, não se preocuparia em ser muito 'produtivo'), o que realmente está fazendo é se preocupar com a qualidade do código, porque código é o inimigo, isso é uma boa coisa para se preocupar.
Infelizmente, a única maneira de saber sobre a qualidade do código é a revisão do código, já que você é uma equipe individual, isso será complicado, mesmo que você tenha parado para revisar seu código (e você realmente não quer parar, certo?) próprio código não revelará tanto quanto um colega revendo seu código. Sugiro tentar alguém para revisar pelo menos parte do seu código, para que você possa saber se o seu 400 LOC / dia está produzindo bobagens ou não. Mesmo uma revisão independente do código de um dia ajudará aqui
fonte
Você não deve se preocupar com o número de LOC que produz por dia.
Mas você deve se incomodar:
fonte
LOC é uma medida 'oficial' de produtividade, mas os argumentos em relação ao seu valor podem ser longos (um ORM pode gerar 50.000 linhas de código em 3 minutos; no entanto, se o design do banco de dados estiver errado, todo esse código poderá ir para a lixeira).
Sugiro que você avalie seu progresso rastreando% de tarefas concluídas versus tempo versus% de tarefas planejadas para serem concluídas. Isso é o que conta. Os clientes pagam pelo código de trabalho que fornece valor comercial, não para os LOCs.
Algumas referências sobre LOC
Contra: LOC - Medida sem sentido
Neutro até certo ponto: Wiki-LOC
Pro (eu discordo da maioria, mas você pode dar uma olhada): Deseconomias de Escala e Linhas de Código
fonte
Você também está medindo o número de duplicatas de código ?
Se o resultado é alto, porque você tem muitas cópias e colas no código, deve se preocupar.
Motivo: no caso de ocorrer um erro na fonte de copiar e colar, é difícil e propenso a erros corrigir todos os usos da cópia e colar
fonte
Se você acredita em um código funcional bonito, essa deve ser sua única medida
fonte