Frequentemente ouço essas duas práticas valiosas de programação: (1) as linhas de código devem ter 80 caracteres ou menos e (2) usar nomes descritivos para variáveis, métodos, classes etc. Entendo o raciocínio de ambas as palavras de conselho, no entanto , eles costumam ser trocas entre si. Se eu mantiver meu código abaixo de 80 caracteres / linha, acabarei usando nomes menos descritivos (especialmente no Python, em que cada recuo conta com 4 caracteres), mas se eu usar nomes mais descritivos, terminarei com linhas com mais de 80 caracteres.
Então, minha pergunta é qual desses dois conselhos é mais importante a ser cumprida se a escolha deve ser feita? Estou imaginando isso como um programador independente (amador), mas mais importante da perspectiva de um engenheiro de software que trabalha para uma empresa maior.
Respostas:
Mantenha seus travessões poucos, seus nomes descritivos e não tenha medo de quebrar uma linha.
Mantenha seus recuos poucos.
Freqüentemente, quando me encontro em uma luta entre identidades e nomes descritivos, dou um passo atrás e olho para o meu nível de indentação. Se você estiver recuando além de 3 ou 4 níveis (2 níveis são automáticos e inevitáveis em muitas instâncias. Leia: definição de método de classe), convém reestruturar seu código, abstraindo a funcionalidade de uma função ou método.
Seus nomes descritivos
Você deve sempre manter seus nomes descritivos. Os nomes descritivos criam código de auto-documentação. Você pode tentar reduzir os nomes em alguns casos, mas a legibilidade vem primeiro.
Não tenha medo de quebrar uma linha
Merda acontece. Se você tiver mais de 80 caracteres e não conseguir recuperar nenhum espaço na linha - quebre-o. A maioria dos idiomas não se preocupa com quebras de linha; portanto, divida a linha em vários. Não basta escolher um local aleatório. Mantenha as coisas agrupadas logicamente e recue outro nível quando você ultrapassar os limites.
fonte
Por que não ambos?
Primeiro de tudo, "descritivo" e "detalhado" não são os mesmos. Por exemplo, se você estiver escrevendo um loop local,
i
é um nome de variável muito bom para a variável de loop;current_iteration_index
, embora indiscutivelmente mais descritivo e definitivamente mais detalhado, é muito pior e não adiciona nenhuma informação, porque o uso dei
como variável de loop é praticamente universalmente aceito e não há outro significado parai
isso.Bons nomes de variáveis são descritivos, pois um programador familiarizado com o idioma da linguagem e com as convenções da base de código pode adivinhar com facilidade qual é seu papel, mas também é conciso o suficiente para manter as coisas compactas.
O limite de 80 caracteres, apesar de originalmente ser uma conseqüência das limitações técnicas dos terminais de texto dos anos 70, ainda é valorizado por muitos atualmente, e mesmo que ainda haja razões técnicas (comprimentos máximos de linha em alguns protocolos de rede, principalmente os relacionados a email), as razões mais convincentes são psicológicas e sociais. Acontece que comprimentos de linha em torno da marca de 66 caracteres proporcionam a experiência de leitura mais confortável para a prosa em linguagem natural (o tamanho da fonte interessante não faz muita diferença e, consequentemente, o tamanho da tela ou do papel); Os limites de linha de 80 caracteres são muito próximos disso, mas como a maior parte de um pedaço de código típico geralmente é recuado em pelo menos um ou dois níveis (o que significa entre 4 e 16 caracteres, dependendo das configurações de recuo),
Outro efeito de seguir as linhas de 80 caracteres é que é um bom indicador de quando as coisas são muito complicadas. As linhas longas são geralmente causadas por um dos seguintes:
if ((user.isLoggedIn && user.hasPermission(page.getRequiredPermission()) && !user.isBanned) || page.getRequiredPermission() == null)
); isso também costuma ser bastante difícil de decifrar, e o código deve ser reescrito em algo mais estruturado. Muito provavelmente, a expressão faz muito e deve ser fatorada em um método ou função.print(translate(LANG_EN, LANG_ES, "This is the home page. Feel welcome to click around and see what we have."));
. Mova o literal para uma variável ou constante; ele ainda pode exceder o comprimento da linha, mas se você fizer isso de forma consistente, o leitor poderá pelo menos ignorar com segurança a parte invisível da linha, assumindo que apenas o restante do literal se segue. Ou, melhor ainda, mova os literais para fora do código e entre em um armazenamento de dados externo (arquivo, banco de dados, qualquer que seja).if
instruções em um método de classe (são 32 colunas de recuo para configurações típicas). Novamente, o aninhamento profundo cria um código complexo e de difícil leitura, e deve ser evitado como uma praga - simplificando, o aninhamento profundo transborda a pilha do cérebro humano durante a leitura.No final, todos esses são sintomas de coisas que você preferiria não ter em sua base de códigos, e impor limites de 80 caracteres é uma maneira simples e agradável que ajuda a manter a complexidade e a legibilidade reduzidas. (Isso não quer dizer que você não pode escrever código perfeitamente ilegível em 80 colunas: os vários concursos de código ofuscado são um contra-exemplo claro).
fonte
A nomeação descritiva é, de longe, mais importante. Na maioria das interfaces, podemos rolar para ver linhas mais longas. Em nenhum caso o sistema pode ajudá-lo a traduzir variáveis e funções com nomes inadequados.
fonte
80 caracteres por linha não são difíceis de encontrar, mesmo os nomes são longos porque existem muitas maneiras de dividir uma única linha de código longo em vários códigos curtos, por exemplo, eu posso dividir uma declaração de condição em C em várias linhas para caber em menos de 40 personagens,
você também pode dividir uma linha de chamada de funções em várias linhas também.
Portanto, as regras de nomeação descritiva e as 80 linhas de caracteres não têm contradição, elas podem coexistir para melhorar a legibilidade.
fonte
O limite de 80 é algo que deveria ter sido aumentado há muito tempo. Observe que esse limite é usado desde a idade, quando o comprimento de cada identificador era limitado a 8 caracteres e apenas uma fonte na tela / impressora. Não há possibilidade de alterar o tamanho da fonte.
Deus, agora temos diferentes tecnologias de tela e impressão. Temos linguagens de programação muito diferentes. Não há mais razão para usar 80 caracteres. Aumente para 120 caracteres, pelo menos.
Mesmo assim, não deve ser um limite rígido. Você passa um personagem além da linha? Bem, nada acontece!
Editar:
Respostas detalhadas sobre a história do limite de 80 caracteres
Caracteres por linha na Wikipedia
fonte