ti-enxame.com

Existe um número ideal de linhas de código por função?

As funções não são usadas apenas para minimizar a duplicação de código - elas também são usadas para dividir uma função longa em outras menores para aumentar a legibilidade, além de tornar o código com comentários próprios. No entanto, esse ganho não é diretamente inversamente proporcional ao número de LOCs por função ou método; caso contrário, teríamos toneladas de funções, todas contendo apenas uma única linha ou duas de código.

Isso me levou a pensar: Existe um número ideal de LOCs por função? Em caso afirmativo, o que é e ele se desvia entre os idiomas?

18
gablin

Em vez do número de linhas, o critério que eu usaria é que cada função faça apenas uma coisa e faça bem.

33
grokus

Uma regra antiga é que uma função deve ser totalmente visível na tela, sem a necessidade de rolagem.

A idéia básica é que, se você não pode olhar para a função inteira de uma vez, a função é complexa demais, e você deve dividi-la em partes mais básicas.

Embora essa regra seja muito prática e útil, a regra formal é que você deve manter apenas uma única etapa lógica em uma função. Uma função executa apenas um trabalho elementar; se você pode dividir o trabalho em partes mais elementares, a função deve ser dividida.

21
Wizard79

Não há nenhum.

As telas estão ficando maiores, os tamanhos das fontes menores. As regras práticas não funcionam tão bem quando as pessoas têm polegares de tamanhos diferentes.

Ser conciso. Se sua função faz várias coisas, provavelmente é uma boa idéia dividi-la em outras menores.

15
Josh K

O Smalltalk possui uma maneira um pouco incomum de reduzir o tamanho dos métodos. Ao escrever o código, você o escreve em um widget chamado Navegador. Um navegador tem duas partes principais, divididas horizontalmente. Seu código está na metade inferior.

Por padrão, um navegador não é muito grande. Você pode ajustar 5 ou 6 linhas antes de começar a rolar. A rolagem, é claro, é um pouco irritante.

Portanto, no Smalltalk, o ambiente "incentiva" você a escrever métodos curtos, com no máximo 6 linhas de comprimento. (Geralmente, isso é bastante; Smalltalk é uma linguagem bastante concisa.)

6
Frank Shearar

O número ideal de linhas de código em um método é variável. Basicamente, você deseja escrever apenas o código suficiente para fazer o que precisa ser feito dentro do contexto da definição da função. Penso nisso como um tipo de princípio de responsabilidade única , aplicado apenas a um método em vez de a uma classe.

Onde um método tem muita lógica e várias etapas a serem concluídas, faz sentido dividir o método em várias etapas distintas. Cada uma dessas etapas seria extraída para novos métodos, conforme necessário.

"caso contrário, teríamos toneladas de funções, todas contendo apenas uma única linha ou duas de código."

Quanto menos método, mais facilmente definido, e mais simples de entender e gerenciar. Não há nada errado em ter centenas de métodos, se você precisar deles. Além disso, de acordo com o SRP que mencionei anteriormente, fica mais fácil extrair novas classes quando os métodos são separados em partes menores e mais gerenciáveis.

2
S.Robins

A resposta é obviamente 42 .

Importante observar: Nenhuma função jamais poderá violar o SRP , ou você precisará enfrentar o inquisição em espanhol .

Algumas dicas de como reduzir a quantidade de linhas:

  • Existem comentários marcando seções individuais? Essas seções devem ser funções.
  • Existem cadeias if-else ou instruções de switch fora de uma fábrica/construtor? Seu design pode precisar de alguns padrões de design melhores para ajudá-lo a dividir responsabilidades.
  • Suas funções são fáceis de testar? Torne suas funções fáceis de testar, pois elas desmoronarão.
  • É complexo e simplesmente não há terra em sigth (monstros de 1000 linhas)? Faça refatoração de sucata - isso é refatoração e não a salve na esperança de ser informado sobre as responsabilidades dos códigos.
1
Johannes

Aqui estão algumas dicas:

  • Se você estiver com problemas para escrever o comentário, explicando a finalidade e o uso da função, é muito longo.

  • Se você é tentado a escrever um comentário explicando a atividade de uma seção de código na função, a função é muito longa.

  • Se você estiver colando código de outra função, os dois serão muito longos (extraia esse código como uma função separada).

  • Se você precisar de uma convenção de codificação para separar os membros dos dados da classe das variáveis ​​locais, a função será muito longa e a classe terá muitos membros.

  • Se você precisar fazer anotações durante a leitura de uma função, é muito longo.

Ter 'toneladas' de funções, cada uma com apenas uma ou duas linhas, não é necessariamente uma coisa ruim. Eu descobri que essas pequenas funções foram reutilizadas muito mais do que eu esperava inicialmente.

0
kevin cline