A Arte de Escrever Programas Legíveis

Técnicas simples e práticas para elaboração de programas fáceis de serem lidos e entendidos

A Arte de Escrever Programas Legíveis Esgotado
× A Arte de Escrever Programas Legíveis

A Arte de Escrever Programas Legíveis

Autores:

ISBN impresso: 978-85-7522-294-2
ISBN ebook: 978-85-7522-739-8
Ano: 2012
Páginas: 212
Preço: R$ 59,00

4 opiniões | Opine sobre este livro

Descrição do livro

"Ter consciência de como seu código-fonte afeta aqueles que trabalharão com ele futuramente é uma parte importante do desenvolvimento de software. Os autores fizeram um ótimo trabalho apresentando os diferentes aspectos desse desafio e explicando detalhes com exemplos instrutivos."

—Michael Hunger, Desenvolvedor de Software, Neo Technology

Como programadores, todos já vimos códigos-fonte tão feios e problemáticos que poderiam desanimar qualquer um. Durante os últimos cinco anos, Dustin Boswell e Trevor Foucher analisaram centenas de exemplos de “códigos-fonte malfeitos” (muitos deles mesmos) para determinar o que havia de errado com eles e como poderiam melhorá-los. A conclusão a que chegaram? Você deve escrever códigos-fonte de modo a minimizar o tempo necessário para que outra pessoa possa entendê-los — ainda que essa “outra pessoa” seja você mesmo.

Este livro se concentra em princípios básicos e técnicas práticas que você poderá aplicar sempre em seus códigos-fonte. Utilizando exemplos de códigos-fonte fáceis de serem compreendidos e retirados de várias linguagens, cada capítulo aborda um aspecto distinto da codificação e demonstra como você pode tornar seu código-fonte fácil de entender.

- Simplifique a nomeação, os comentários e a formatação com dicas que podem ser aplicadas a todas as linhas de seu código-fonte
- Aprimore os loops, a lógica e as variáveis de seu programa para reduzir sua complexidade e potencial confusão
- Confronte problemas no nível das funções, usando técnicas como reorganizar blocos de código para que realizem uma tarefa de cada vez
- Escreva códigos-fonte de teste efetivos, completos e concisos — além de legíveis
Ver menos ▲

Sumário

Sumário

  • Prefácio
    • Códigos devem ser fáceis de entender
  • O que torna um código “melhor”?
  • Teorema fundamental da legibilidade
  • Menor é sempre melhor?
  • Por acaso o tempo-para-entender entra em conflito com outros objetivos?
  • A parte difícil
  • Parte I Melhorias superficiais
    • Criação de nomes informativos
  • Escolha palavras específicas
  • Evite nomes genéricos como tmp e retval
  • Prefira nomes concretos a nomes abstratos
  • Inclusão de informações extras a um nome
  • Qual deve ser o comprimento de um nome?
  • Utilize a formatação dos nomes para transmitir significado
  • Sumário
    • Nomes que não podem ser mal interpretados
  • Exemplo: Filter()
  • Exemplo: Clip(text, length)
  • Prefira min e max para limites (inclusivos)
  • Prefira first e last para intervalos inclusivos
  • Prefira begin e end para intervalos do tipo inclusivo/exclusivo
  • Nomenclatura de booleanos
  • Atendendo às expectativas de seus usuários
  • Exemplo: avaliação de vários candidatos a nomes
  • Sumário
    • Estética
  • Por que a estética é importante?
  • Reorganize quebras de linhas para que sejam consistentes e compactas
  • Utilize métodos para eliminar irregularidades
  • Utilize o alinhamento em colunas quando adequado
  • Escolha um ordenamento significativo e utilize-o de modo consistente
  • Organize declarações em blocos
  • Divida seus códigos em “parágrafos”
  • Estilo pessoal versus consistência
  • Sumário
    • Como saber o que comentar
  • O que NÃO devemos comentar
  • Registre seus pensamentos
  • Coloque-se na posição do leitor
  • Considerações finais – como superar seu bloqueio de escritor
  • Sumário
    • Crie comentários precisos e compactos
  • Mantenha seus comentários compactos
  • Evite pronomes ambíguos
  • Melhore referências imprecisas
  • Descreva o comportamento das funções de modo preciso
  • Utilize exemplos de entrada/saída para ilustrar situações confusas
  • Declare a intenção de seu código
  • Comentários de “parâmetros de função nomeados”
  • Utilize palavras informativas
  • Sumário
  • Parte II Simplificação de loops e lógica
    • Como facilitar a leitura do fluxo de controle
  • Ordem dos argumentos em condicionais
  • Ordem de blocos if/else
  • Expressão condicional ?: (também conhecida como “operador ternário”)
  • Evite loops do/while
  • Retorno antecipado de uma função
  • O infame goto
  • Minimize o uso de aninhamentos
  • Você consegue acompanhar o fluxo de execução?
  • Sumário
    • Divisão de expressões gigantes
  • Variáveis de explicação
  • Variáveis de resumo
  • Uso das leis de De Morgan
  • Uso excessivo da lógica de curto-circuito
  • Exemplo: Problemas com lógica complicada
  • Divisão de expressões gigantes
  • Outra forma criativa de simplificarmos expressões
  • Sumário
    • Variáveis e legibilidade
  • Eliminação de variáveis
  • Reduza o escopo de suas variáveis
  • Prefira variáveis de gravação única
  • Um exemplo final
  • Sumário
  • Parte III Reorganização de seu código
    • Extração de subproblemas não relacionados
  • Exemplo introdutório: findClosestLocation()
  • Código utilitário puro
  • Outros códigos de propósito geral
  • Crie muitos códigos de propósito geral
  • Funcionalidades específicas de projetos
  • Simplificação de uma interface existente
  • Remodele uma interface de acordo com suas necessidades
  • Cuidado para não ir longe demais
  • Sumário
    • Uma tarefa de cada vez
  • Tarefas podem ser pequenas
  • Extração de valores de um objeto
  • Um exemplo mais extenso
  • Sumário
    • Como transformar seus pensamentos em código
  • Descreva sua lógica com clareza
  • Vale a pena conhecer suas bibliotecas
  • Aplicação desse método a problemas maiores
  • Sumário
    • Escreva menos código
  • Não se preocupe em implementar esse recurso – ele não será necessário
  • Questione e divida seus requisitos
  • Mantenha sua base de código pequena
  • Esteja familiarizado com as bibliotecas à disposição
  • Exemplo: Uso de ferramentas Unix em vez de codificação
  • Sumário
  • Parte V Tópicos selecionados
    • Testes e legibilidade
  • Facilite a leitura e a manutenção de seus testes
  • O que há de errado com este teste?
  • Como tornar esse teste mais legível
  • Como tornar suas mensagens de erros mais legíveis
  • Escolha de boas entradas de teste
  • Nomenclatura de funções de teste
  • O que havia de errado com aquele teste?
  • Desenvolvimento compatível com testes
  • Como perceber quando exageramos
  • Sumário
    • Projeto e implementação de um “contador de minutos/horas”
  • O problema
  • Definição da interface da classe
  • Tentativa 1: uma solução ingênua
  • Tentativa 2: projeto da “esteira rolante”
  • Tentativa 3: um projeto com intervalos de tempo agrupados
  • Comparação das três soluções
  • Sumário
    • Leituras adicionais
  • Livros que tratam da elaboração de códigos de alta qualidade
  • Livros que tratam de vários tópicos de programação
  • Livros de significado histórico
  • Sobre os autores
  • Índice remissivo
Ver sumário completo ▼

Sobre os autores

Dustin Boswell

Dustin Boswell graduou-se na CalTech e trabalhou no Google por cinco anos, na infraestrutura de rastreamento web e em programas de publicidade. Dustin já criou vários sites e gosta de trabalhar em projetos que envolvam grandes bancos de dados e aprendizagem de máquina (machine learning).… Ver perfil completo ▶

Trevor Foucher

Trevor Foucher passou a última década na Microsoft como engenheiro, gerente e diretor técnico em produtos para Windows e de segurança, e no Google, trabalhando em programas de publicidade e infraestrutura de busca.… Ver perfil completo ▶

Opinião dos leitores

Werter B

Excelente livro, ele realmente te ensina a escrever códigos mais legíveis e limpos. Todas as técnicas são muito boas. É um livro obrigatório para todos os devs.

Fidelis B C

Livro útil e adequado para leitores de nível intermediário.

Isvaldo F de S

Programar é muito mais que saber códigos e sintaxe. Trabalhar em equipe e pensar na reutilização são práticas que às vezes determinam a vida de um sistema/programa. Esse livro aborda excelentes práticas que hoje uso em meus projetos! Recomendo a leitura, além de simples e rápida, ela é muito engraçada.

Victor H S d A

Recomendo a todos esse livro! A leitura é bastante agradável, e conta com ótimos exemplos de como elaborar códigos fáceis de ler e se manter.

Ver todas ▼

Títulos relacionados