Pergunta

Duplicate possíveis:
Quando é uma função muito tempo?

Eu recentemente sido dada a tarefa pouco invejável de revisão pobre código escrito por outro desenvolvedor e documentar as más práticas. (Isso tudo é para fins de sair de pagar para o trabalho do desenvolvedor, em vez de qualquer motivo altruísta, é claro!)

O código revisado tem vários procedimentos que são muitas linhas de código - o mais longo é quase 600 linhas. Um par de problemas com este que eu tenho pensado são de manutenção e legibilidade.

O truque é que eu preciso para justificar para um leigo por que isso é uma má prática e, se possível guardá-lo com um livro de referência bem visto e atual. Analogias são bons também.

Todas as idéias?

Duplicate:? Quando é uma função muito longo
Duplicate: melhor regra para tamanho máximo função?

Foi útil?

Solução

Não se trata de linhas de código. Como Steve McConnell e Bob Martin digamos (duas referências muito bom sobre práticas recomendadas de codificação), um método deve fazer uma coisa e apenas uma coisa. No entanto muitas linhas de código que leva para fazer que uma coisa é quantas linhas ele deve ter. Se que "uma coisa" pode ser quebrado em coisas menores, cada um deles deve ter um método.

boas pistas seu método está fazendo mais de uma coisa:

  • Mais de um nível de recuo em um método (indica muitas ramificações lógica para ser apenas fazendo uma coisa)
  • "quebras de parágrafo" - espaço em branco entre grupos lógicos de código indicam o método está fazendo mais de uma coisa

Apenas para citar alguns. Bob Martin também diz para mantê-lo em torno de 10. Pessoalmente, eu costumo tentar atirar para 10. Se ele começa a ficar perto de 20, que é uma bandeira mental para prestar mais atenção a este método. Mas, afinal, LoC é uma má métrica para praticamente qualquer coisa. É apenas um indicador útil que potencialmente pode apontar para o problema real.

Outras dicas

A verdadeira resposta

Não há nenhum número específico.

A Concrete Resposta

Se você tem que justificar com um número de advogados ou algo assim, descobrir o número máximo de linhas que se encaixam em uma janela do editor de desenvolvimento típico em sua loja, e uso isso.

Clínica Geral

Você não deve mesmo realmente olhar para ele dessa forma, mas não deve haver nada muito complexo acontecendo em qualquer função um.

Cada unidade de trabalho deve ser delegado a sua própria unidade testável descritiva chamado método. Faça isso e todos os seus métodos acabam pequena e legível, sem nunca contar linhas ......

A maior agressor que vejo é 3-4 + condições boolean explodiu no meio de uma instrução if. Envolva tudo o que se em um boolean com um nome bom, em seguida, encerrar quaisquer peças que o compõem que são complexas em sua própria.

Em primeiro lugar, nota que a restrição de comprimento é totalmente separado do costume métrica, que é "faz a função de fazer apenas uma coisa, e fazê-lo bem?" Se a resposta a essa pergunta não é, sim, a função não é provavelmente uma boa de qualquer maneira, independentemente da duração.

Relevante especificamente para o comprimento máximo, uma citação de código completo, geralmente considerado como um dos melhores livros sobre o assunto de práticas de codificação:

De tempos em tempos, um algoritmo complexo vai levar a uma rotina mais tempo, e, nessas circunstâncias, a rotina deve ser permitido crescer organicamente até 100-200 linhas. (A linha é um noncomment, linha não vazia de código-fonte.) Décadas de evidências digamos que as rotinas de tal extensão não são mais propenso a erros de rotinas mais curtas. Vamos questões como a profundidade de assentamento, número de variáveis, e outras considerações de complexidade relacionada com a ditar o comprimento da rotina em vez de impor uma restrição de comprimento per se.

Se você quiser escrever rotinas mais do que cerca de 200 linhas, tome cuidado. Nenhum dos estudos que relataram custo reduzido, diminuiu as taxas de erro, ou ambos com rotinas maiores distinguido entre os tamanhos maiores do que 200 linhas, e você é obrigado a correr para um limite superior de compreensibilidade como você passar 200 linhas de código.

Tem sido muitos anos desde que eu li isso, mas eu acho que foi em Learning Perl que eles recomendam fazer um procedimento não mais que você pode caber tudo na tela ao mesmo tempo. Eu pensei que este era um bom critério. Eu vi funções mais longos que ainda estavam legíveis por causa do código repetitivo (por exemplo, acesso à base de dados e atribuir valores de propriedade), mas esses são a excepção e não a norma.

Para adicionar ponto de Rex, também deve ser o mais curto possível. Bob Martin diz 10 ou menos

Object Mentor - Como grande deve ser uma função

Como poucos como possível.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top