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 se desvia entre os idiomas?
Respostas:
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.
fonte
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 é muito complexa 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 faz apenas um trabalho elementar; se você pode dividir o trabalho em partes mais elementares, a função deve ser dividida.
fonte
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 ideia dividi-la em outras menores.
fonte
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.
Assim, 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.)
fonte
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 em novos métodos, conforme necessário.
Quanto menos método, mais fácil é 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 divididos em partes menores e mais gerenciáveis.
fonte
A resposta é obviamente 42 .
Importante observar: Nenhuma função pode violar o SRP , ou você deve enfrentar a inquisição em espanhol .
Algumas dicas de como reduzir a quantidade de linhas:
fonte
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, ambos 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.
fonte