Comprimento do arquivo 'recomendado' e larguras de linha [fechado]

9

Fiquei curioso para saber se alguém sabia de uma recomendação de uma fonte respeitável sobre o número máximo de linhas de código para um determinado arquivo. Por exemplo, o Closure Linter do Google recomenda que cada linha não exceda 80 caracteres.

Devin G Rhode
fonte
Seu exemplo é incongruente com a pergunta. Sua pergunta é feita sobre linhas por arquivo e seu exemplo são caracteres por linha.
Jason S
2
É o mesmo conceito - a área quadrada que você precisa percorrer, seja horizontal ou vertical.
Devin G Rhode

Respostas:

11

Um arquivo deve ser curto o suficiente para que você possa encontrar qualquer função ou método sem rolar para frente e para trás várias vezes procurando por ele ou precisando se lembrar de uma sequência de pesquisa. A métrica que uso é a quantidade de tempo que gasto procurando código em um arquivo em vez de lê-lo. Se isso se tornar perceptível, é hora de reparticionar o arquivo ou a classe.

Um bom tamanho para um bloco de código básico é curto o suficiente, tanto em largura quanto em altura, para que você possa projetar suas entranhas durante uma revisão de código de grupo e ajustá-lo sem que a fonte seja tão pequena que o cara na parte de trás a sala de conferências não pode lê-lo. Esse tamanho também ajuda se você for chamado para explicar algum código quando tudo o que você tem é um dispositivo móvel ou tablet.

hotpaw2
fonte
Esta é a orientação mais útil, muito obrigado!
Devin G Rhode
Existe um tamanho de arquivo muito curto ? Eu tenho um projeto com 35 arquivos com um comprimento médio de ~ 200 linhas.
Dan
11
@ Dan eu arriscaria "não" como resposta. Se abrir um arquivo for muito difícil em sua configuração, talvez seja hora de melhorar sua configuração (por exemplo, plugins do vim, melhor IDE, o que quer que o emacs faça) #
Mike Graf
@ Dan: Um arquivo muito curto? Possível se você gastar mais tempo pesquisando o arquivo minúsculo correto por alguns LOC, em vez de encontrá-lo em algum arquivo logicamente e estreitamente relacionado (mas não muito longo).
precisa saber é o seguinte
9

Não existe isso e, se houvesse, seria altamente dependente da linguagem que você estava usando (fazendo a mesma coisa no assembler versus C # ou Java, por exemplo).

Para os idiomas de nível superior, você pode ver esta discussão sobre SO. Para Java / C #, 10 a 20 linhas por método é o que Bob Martin recomenda como máximo. Não há discussão sobre arquivos, pois não é relevante e depende do que a classe deve fazer.

No que diz respeito aos 80 caracteres por limite de linha - isso é um retrocesso aos dias dos cartões perfurados. Dito isto, quando as linhas crescem demais, a legibilidade sofre.

Oded
fonte
5
+1: É bom manter linhas com menos de 80 caracteres; mais fácil de ler e dá mais espaço para lado a janelas laterais
Donal Fellows
6
Pessoalmente, acho que a legibilidade sofre quando uma linha é agrupada em várias linhas para caber em 80 ou menos. Há também o tempo perdido, decidindo onde fazer as quebras ou discutindo sobre o assunto.
ergosys
5

Os comprimentos de arquivo e linha são medidas dos efeitos secundários da complexidade e, como tal, são altamente variáveis. O que você deve procurar é um código sem complexidade desnecessária, não uma certa contagem máxima de linhas.

Arquivos longos tendem a indicar que métodos, sub-rotinas ou classes são excessivamente complexas (fazer muitas coisas, não suficientemente fatoradas, etc.)

Linhas longas tendem a indicar que as expressões são excessivamente complexas.

São cheiros que indicam um possível problema de código, não métricas de destino bem definidas.

Rein Henrichs
fonte
3

O comprimento da linha deve ser tal que você não precise rolar a tela para ver a linha inteira. Isso depende do tamanho e da resolução do monitor.

Métodos e funções são melhores se caber em uma tela.

Os arquivos não devem demorar muito. Os melhores são arquivos curtos, onde é fácil entender a classe e a implementação.
Uma vez eu trabalhei em um projeto que tinha um arquivo de 10 klines. Era como ler um livro muito complexo. Preciso dizer quantos problemas essa implementação causou?

BЈовић
fonte
O código não deve exigir uma configuração de monitor grande de fonte minúscula, especialmente para revisões de código de grupo.
hotpaw2
"O comprimento da linha deve ser tal que você não precise rolar a tela para ver a linha inteira." - e se o seu editor terminar?
Dan Dascalescu
3

80 caracteres!

Lembro que eu costumava ver arquivos de código-fonte para programas de cobrança de cerca de 80 páginas e mais quando fazia o COBOL. Claro, não vejo que isso seja quase uma prática comum, mas 80 caracteres é igualmente ridículo.

Do ponto de vista do tamanho da classe, se você tentar aplicar esta sugestão em uma classe Customer típica que possua cerca de 80 propriedades e 20 métodos ou mais, será necessário dividir a classe em várias outras e tornar o código muito confuso.

NoChance
fonte
11
Absolutamente. 80 caracteres significa que você pode imprimir uma seção de código para fazer um brainstorming com um tamanho de fonte razoável em uma folha A4 / Letter em retrato. Isso também significa que, em um monitor de computador de desenvolvimento razoável, é possível visualizar três cópias do código-fonte lado a lado sem rolagem horizontal para fazer fusões de três vias (Engraçado que 80x8x3 é 1920 * 8 ').
Mark Booth
2

Eu tento manter as classes e métodos curtos, mas não se preocupe muito com o comprimento da linha. Nestes dias de telas largas e identificadores longos, acho que oitenta caracteres são muito poucos. É preciso algum trabalho para quebrar as instruções para que sejam lidas facilmente e, com um limite de oitenta caracteres, isso acontece com bastante frequência. Eu acho que cerca de 120 ou 130 colunas por linha é mais razoável.

Kevin Cline
fonte
Eu uso monitores de 22 "virados verticalmente, o que me dá 1080 pixels em cada tela (e verticalmente, posso ter 104 linhas de código visíveis por vez!). Manter larguras de linha com 90 ou menos caracteres é útil em cenários como este.
21813 Roy Tinker