
A arte do código legível
The Art of Readable CodePor Dustin Boswell Trevor Foucher,
Avaliações: 26 | Classificação geral: média
Excelente | |
Boa | |
Média | |
Mau | |
Horrível |
Como programadores, todos nós vimos o código-fonte tão feio e com erros que faz nosso cérebro doer. Nos últimos cinco anos, os autores Dustin Boswell e Trevor Foucher analisaram centenas de exemplos de "código incorreto" (muitos deles próprios) para determinar por que eles são ruins e como podem ser melhorados. A conclusão deles? Você precisa escrever um código que minimize o tempo que levaria
Muito possivelmente o livro de códigos mais divertido, mas isso se deve mais aos desenhos de capítulos (alguns dos quais surpreendentemente engraçados) do que ao próprio texto.
Uma coisa que foi irritante foi a tentativa dos autores de incluir exemplos de aparentemente todas as línguas já concebidas. Eu sabia que o python, reconhecia algum C, se perdia totalmente no javascript e não conseguia nem identificar alguns dos outros. Teria sido mais fácil se eles tivessem escolhido um idioma e suplementado outros quando necessário, em vez de pular como uma abelha que não pode escolher uma flor favorita.
Ainda assim, algumas boas idéias e meu código ficarão mais limpos à medida que avançar agora que eu o li. Sólidas três estrelas no final.
Definitivamente, é mais fácil praticar esses inquilinos. Claro, limpo, acessível.
2. Código esteticamente agradável é mais fácil de ler. Formate seu código de maneira consistente e significativa.
3. Coloque-se no lugar do leitor. Pense no que comentar, o que não comentar e o que o leitor precisa saber e como transmitir essas informações no menor espaço possível.
4. Em vez de minimizar o número de linhas, minimize o tempo necessário para alguém entender. Quebre a lógica complexa onde quer que você encontre.
5. Facilite a leitura do seu código tendo menos variáveis. Menos variáveis são mais fáceis de controlar. Remova variáveis desnecessárias, restrinja escopos e use variáveis imutáveis para tornar seu código leve.
6. Refatore o código genérico e os subproblemas não relacionados do seu código. Extraia-os e forneça uma seção separada para obter um código mais limpo. Faça seu código executar apenas uma tarefa por vez para organizá-lo novamente.
7. Descreva seu design em inglês simples. Se você não pode, provavelmente algo está faltando.
8. Saiba quando não codificar. Mantenha sua base de código pequena. Familiarize-se e reutilize as bibliotecas padrão em vez de reinventar a roda a cada vez. Não exagere na engenharia.
9. Torne o código de teste mais legível. Será mais fácil adicionar mais casos de teste no futuro
O livro então segue em frente e implementa um "contador de minutos / horas" usando os parâmetros descritos no livro.
Vale a pena manter como referência.
Deixe-me tentar resumir em alguns parágrafos:
O teorema fundamental do código é que ele deve ser mais fácil de entender.
Para fazer melhorias no nível da superfície em nosso código, queremos definir variáveis, funções com palavras precisas, comentários com informações embaladas e formatação de forma que a legibilidade seja fácil.
Queremos ter certeza de incluir informações suficientes para ser clara e precisa na nomeação de variáveis, como Kill (), Pause () em vez de Stop (). Às vezes, outros programadores podem interpretar mal os nomes de nossos programas. Queremos ter certeza de que pensamos em outros programadores e em como eles interpretariam nosso código.
Os comentários são inestimáveis e devem ser usados apenas quando ajudam a entender melhor o código. Seguimos a variável de valor padrão da esquerda para a direita enquanto usamos o fluxo de controle e minimizamos o máximo possível para o uso de loops aninhados profundos. No caso de expressões complexas ou expressões gigantes, por mais que possamos minimizar a pilha mental para outros programadores, é mais fácil manter, o código tem menos probabilidade de criar bugs.
Tanto quanto possível, as funções essenciais podem ser implementadas a partir da biblioteca de programação pertinente, para que escrevamos menos código. Cada função precisa conter uma tarefa por vez e organizar o máximo de módulos, funções possível.
Eu tenho um resumo de todo o livro, se você quiser, PM me.
Deus Vult,
Gottfried
A idéia principal por trás dos ensinamentos é:
"O teorema fundamental da legibilidade: o código deve ser escrito para minimizar o tempo que levaria para que alguém entendesse". (3)
O que eu amo neste livro é sua infinidade de exemplos que ilustram as várias maneiras pelas quais você pode implementar o Teorema Fundamental da Legibilidade. Exemplos são fornecidos em C ++, Java, JavaScript e Python. Mas não tema se você é um novato em programação ou um especialista em alguma outra linguagem! Você não precisa ser proficiente em nenhuma dessas linguagens para entender os conceitos que estão sendo ilustrados: o belo código “art” vs. as coisas mais feias. E, se você se perder ou se sentir intimidado, cada capítulo será encerrado com um resumo que marque os princípios e as técnicas principais, para que você tenha sempre as sugestões em inglês simples.
O conteúdo aqui não é exclusivo. Muito disso pode ser encontrado em Código Completo or Código Limpo. Pelo contrário, é o foco estreito que torna este livro valioso. Ele se junta à minha pequena lista de livros técnicos que todos os programadores devem ler, mesmo aqueles que não lêem livros técnicos apenas por diversão.
Eu recomendo este livro, especialmente para
1. Quem é novo na programação.
2. Qualquer equipe, recém-formada ou estabelecida, que não tenha uma cultura que valorize o código legível.
3. Qualquer pessoa que precise de um lembrete sobre a legibilidade como base do código de qualidade.
O livro contém vários exemplos curtos e agradáveis.
Ele revisa as coisas sobre as quais lemos em "Refatoração", "Código Limpo" e "Código Completo".
Sobrepõe-se a alguns tópicos com Código Limpo e Filosofia de Design de Software, mas nesse sentido vale a pena examiná-los de vez em quando para uma atualização.
Os quadrinhos entre capítulos e seções de texto também funcionam muito bem.
Curto e conciso, cheio de conselhos úteis. A maioria das coisas é bastante óbvia quando você as lê em "Code Complete" ou "Clean Code", mas ainda existem algumas coisas que serão novas para o leitor.
É curto, objetivo e bem escrito.
Alguns exemplos estão em C ++ / Java / Python e, às vezes, até Javascript. No entanto, nunca fica muito específico do idioma que você ficaria confuso.
Aqui estão alguns dos principais pontos que tirei dela:
1. A única coisa em que você deve se concentrar é reduzir o "tempo até a compreensão". Isso significa quanto tempo leva para outra pessoa (com zero conhecimento do seu código) ler seu código e entendê-lo completamente.
2. Houve um ótimo exemplo de uso de pensamento negativo / oposto para codificar uma lógica menos complexa e mais legível. O problema de tentar detectar se dois intervalos se sobrepõem pode ser melhor expresso ao tentar descobrir se dois intervalos NÃO se sobrepõem em vez do caso positivo.
3. O uso de recursos de linguagem como macros às vezes pode aumentar significativamente a legibilidade. Obviamente, a metaprogramação não é suportada em todos os idiomas, mas pode ser ótima se o idioma escolhido o possuir. Dito isto, o livro adverte contra o uso excessivo desses recursos. Provavelmente, é melhor limitá-lo ao uso simples, onde o leitor pode ver facilmente o que está fazendo imediatamente.
4. Não aceite uma interface ruim de bibliotecas / APIs existentes. Quando possível, você provavelmente deve criar uma fachada / adaptador para quebrar a interface feia para manter seu código limpo. Isso tem o benefício adicional de trocar por uma biblioteca melhor ou mais atualizada, caso surja a oportunidade.
5. Houve uma citação que é atribuída incorretamente a Einstein, mas ainda assim é bastante astuta. Na página 132, diz-se que "você realmente não entende algo, a menos que possa explicar à sua avó".
6. Tente "dar um passo atrás" com frequência e explicar a funcionalidade desejada em inglês simples. Alguns podem chamar isso de esquivar-se, onde você tenta explicar o que está tentando realizar conversando com um pato ou pessoa imaginária. Depois de definir isso em frases simples, use-o como andaime para direcionar sua codificação.
7. Reduza incansavelmente o escopo e a fluência dos recursos. O código que você não precisa escrever sempre será mais limpo do que o código que você precisa escrever. Uma maneira de resolver isso é procurar apenas 80% do que você acha necessário (a la Pareto). Temos a tendência de pensar que muitos recursos são necessários quando é mais provável que a qualidade do produto se beneficie por ser menos ambiciosa.
Em suma, um ótimo livro. Nada mente soprando, mas ainda assim uma boa leitura que eu recomendaria.
A primeira parte do livro são os detalhes que entram em cada linha de código. Nomeando variáveis e funções, estética (usando espaços em branco e comprimentos de linha para facilitar a compreensão do código), usando comentários frugalmente, simplificando a lógica. Eu tinha uma pessoa trabalhando comigo que recusou meus comentários nessa área. Acho que, em parte, o motivo pelo qual o tempo dele foi improdutivo foi que ele não aceitou sugestões nesse sentido, e sua implementação de algoritmos foi difícil de seguir e acho que continha erros.
A segunda parte foi sobre a reorganização do código. Isso é algo que tem relevância como parte do que faço é desenvolver novas metodologias. Mas esse desenvolvimento é muito frequente em muitos estágios. A seção de uma tarefa de cada vez foi particularmente esclarecedora. Há muito que conheço a ideia de que é benéfico fazer com que cada função retorne apenas uma saída. Mas senti que isso só se aplicava quando chegava a um ponto em que o progresso atual no método tinha uma única saída. O capítulo aqui discute a organização das etapas da função, de modo que cada seção da função fez apenas uma coisa. E, lendo-o, consigo pensar em como isso tornaria o último artigo que submeti a um diário muito menos doloroso de desenvolver e manter.
É fácil ignorar livros que analisam a arte e o ofício da programação em favor daqueles que ensinam novas habilidades ou transmitem novos recursos ou técnicas de linguagem ou biblioteca. Mas um livro como A arte do código legível é aquele que ajudará ao longo da carreira, parte por parte, à medida que você amadurece como programador e programador.
Recebi uma cópia eletrônica gratuita deste livro como parte do programa O'Reilly press Blogger
1. O código de nomeação e comentário é abordado na primeira seção
2. Loops de simplificação e fluxo de controle são abordados na segunda seção
3. A reorganização do código para remover a duplicação e trazer a responsabilidade única é abordada na terceira seção
4. A quarta seção é sobre como escrever bons casos de teste. Ele também fornece um exemplo de projeto para executar como o código pode ser aprimorado progressivamente.
Uma leitura muito boa.
Altamente recomendado para programadores iniciantes e iniciantes.
Eu acho que mesmo o princípio mais básico deste livro - "escreva seu código para minimizar a quantidade de tempo que alguém mais precisaria para entendê-lo" - é valioso, mas é desenvolvido através de bons exemplos de código que cobrem a escrita de nomes de variáveis específicos, lógica de aninhamento, extração de métodos e variáveis de resumo e gravação de menos código. Gostei deste livro.