Refatoração – 2ª Edição

Aperfeiçoando o design de códigos existentes

Refatoração – 2ª Edição
× Refatoração – 2ª Edição

Refatoração – 2ª Edição

Compartilhar

Autor: Martin Fowler

ISBN impresso: 978-85-7522-724-4
ISBN ebook: 978-85-7522-725-1
Ano: 2020
Páginas: 456
Preço impresso: R$ 129,00 O ebook deste livro está disponível na Amazon.

5 opiniões | Opine sobre este livro

Descrição do livro

Por mais de vinte anos, programadores experientes no mundo inteiro contaram com o livro Refatoração de Martin Fowler para aperfeiçoar o design de códigos existentes e melhorar a manutenibilidade do software, assim como para deixar o código existente mais fácil de entender.

Essa nova edição ansiosamente esperada foi atualizada por completo para refletir mudanças vitais no domínio da programação. Refatoração 2ª Edição contém um catálogo atualizado das refatorações e inclui exemplos de código JavaScript bem como novos exemplos funcionais que demonstram a refatoração sem classes.

Assim como na edição original, este livro explica o que é refatoração, por que você deve refatorar, como reorganizar um código que precise de refatoração e como fazer isso de forma bem-sucedida, independentemente da linguagem usada.

• Entenda o processo e os princípios básicos da refatoração.

• Aplique rapidamente refatorações convenientes para deixar um programa mais fácil de entender e de alterar.

• Reconheça “maus cheiros” no código que sinalizam oportunidades para refatorar.

• Explore as refatorações, cada uma com suas explicações, a motivação, o mecanismo e exemplos simples.

• Escreva testes robustos para suas refatorações.

• Reconheça as contrapartidas e os obstáculos para a refatoração.

Ver menos ▲

Sumário

  • Apresentação da primeira edição
  • Prefácio
  • Capítulo 1 ■ Refatoração: primeiro exemplo
  • Ponto de partida
  • Comentários sobre o programa inicial
  • Primeiro passo na refatoração
  • Decompondo a função statement
  • Status: muitas funções aninhadas
  • Separando as fases de cálculo e de formatação
  • Status: separado em dois arquivos (e fases)
  • Reorganizando os cálculos por tipo
  • Status: criando os dados com a calculadora polimórfica
  • Considerações finais
  • Capítulo 2 ■ Princípios da refatoração
  • Definindo a refatoração
  • Dois chapéus
  • Por que devemos refatorar?
  • Quando devemos refatorar?
  • Problemas com a refatoração
  • Refatoração, arquitetura e Yagni
  • Refatoração e o processo mais amplo de desenvolvimento de software
  • Refatoração e desempenho
  • De onde veio a refatoração?
  • Refatorações automatizadas
  • Indo além
  • Capítulo 3 ■ “Maus cheiros” no código
  • Nome misterioso
  • Código duplicado
  • Função longa
  • Lista longa de parâmetros
  • Dados globais
  • Dados mutáveis
  • Alteração divergente
  • Cirurgia com rifle
  • Inveja de recursos
  • Agrupamentos de dados
  • Obsessão por primitivos
  • Switches repetidos
  • Laços
  • Elemento ocioso
  • Generalidade especulativa
  • Campo temporário
  • Cadeias de mensagens
  • Intermediário
  • Trocas escusas
  • Classe grande
  • Classes alternativas com interfaces diferentes
  • Classe de dados
  • Herança recusada
  • Comentários
  • Capítulo 4 ■ Escrevendo testes
  • Importância de um código autotestável
  • Código de exemplo para testar
  • Um teste inicial
  • Acrescente outro teste
  • Modificando o fixture
  • Sondando os limites
  • Muito além disso
  • Capítulo 5 ■ Apresentação do catálogo
  • Formato das refatorações
  • Escolha das refatorações
  • Capítulo 6 ■ Primeiro conjunto de refatorações
  • Extrair função (Extract Function)
  • Internalizar função (Inline Function)
  • Extrair variável (Extract Variable)
  • Internalizar variável (Inline Variable)
  • Mudar declaração de função (Change Function Declaration)
  • Encapsular variável (Encapsulate Variable)
  • Renomear variável (Rename Variable)
  • Introduzir objeto de parâmetros (Introduce Parameter Object)
  • Combinar funções em classe (Combine Functions into Class)
  • Combinar funções em transformação (Combine Functions into Transform)
  • Separar em fases (Split Phase)
  • Capítulo 7 ■ Encapsulamento
  • Encapsular registro (Encapsulate Record)
  • Encapsular coleção (Encapsulate Collection)
  • Substituir primitivo por objeto (Replace Primitive with Object)
  • Substituir variável temporária por consulta (Replace Temp with Query)
  • Extrair classe (Extract Class)
  • Internalizar classe (Inline Class)
  • Ocultar delegação (Hide Delegate)
  • Remover intermediário (Remove Middle Man)
  • Substituir algoritmo (Substitute Algorithm)
  • Capítulo 8 ■ Movendo recursos
  • Mover função (Move Function)
  • Mover campo (Move Field)
  • Mover instruções para uma função (Move Statements into Function)
  • Mover instruções para os pontos de chamada (Move Statements to Callers)
  • Function Call)
  • Deslocar instruções (Slide Statements)
  • Dividir laço (Split Loop)
  • Substituir laço por pipeline (Replace Loop with Pipeline)
  • Remover código morto (Remove Dead Code)
  • Capítulo 9 ■ Organizando dados
  • Separar variável (Split Variable)
  • Renomear campo (Rename Field)
  • Substituir variável derivada por consulta (Replace Derived Variable with Query)
  • Mudar referência para valor (Change Reference to Value)
  • Mudar valor para referência (Change Value to Reference)
  • Capítulo 10 ■ Simplificando lógicas condicionais
  • Decompor condicional (Decompose Conditional)
  • Consolidar expressão condicional (Consolidate Conditional Expression)
  • with Guard Clauses)
  • Introduzir caso especial (Introduce Special Case)
  • Introduzir asserção (Introduce Assertion)
  • Capítulo 11 ■ Refatorando APIs
  • Separar consulta de modificador (Separate Query from Modifier)
  • Parametrizar função (Parameterize Function)
  • Remover argumento de flag (Remove Flag Argument)
  • Preservar objeto inteiro (Preserve Whole Object)
  • Substituir parâmetro por consulta (Replace Parameter with Query)
  • Substituir consulta por parâmetro (Replace Query with Parameter)
  • Remover método de escrita (Remove Setting Method)
  • Substituir função por comando (Replace Function with Command)
  • Substituir comando por função (Replace Command with Function)
  • Capítulo 12 ■ Lidando com herança
  • Subir método (Pull Up Method)
  • Subir campo (Pull Up Field)
  • Subir corpo do construtor (Pull Up Constructor Body)
  • Descer método (Push Down Method)
  • Descer campo (Push Down Field)
  • Substituir código de tipos por subclasses (Replace Type Code with Subclasses)
  • Remover subclasse (Remove Subclass)
  • Extrair superclasse (Extract Superclass)
  • Condensar Hierarquia (Collapse Hierarchy)
  • Substituir subclasse por delegação (Replace Subclass with Delegate)
  • Substituir superclasse por delegação (Replace Superclass with Delegate)
  • Bibliografia
  • Índice remissivo
Ver sumário completo ▼

Sobre o autor

Martin Fowler

MARTIN FOWLER é cientista-líder na ThoughtWorks. Ele descreve a si mesmo como “autor, palestrante, consultor e alguém que sempre fala muito sobre desenvolvimento de software”. Fowler tem como foco o design de softwares corporativos: explora o que faz um design ser bom e quais são as práticas necessárias para criar um bom design. Site do autor:… Ver perfil completo ▶

Opinião dos leitores

Hélcio S

Excelente qualidade técnica e didática

Rodrigo A de O

Excelente conteúdo, impressão e capa

Felipe B

Martin Fowler é sempre uma ótima referência - sensato, atento aos aspectos práticos e preocupado com a didática. O livro Refatoração é uma referência na área e uma leitura que recomendo muito para qualquer pessoas que lide com escrita de código - seja no back end, no front end ou em demais áreas que não se encaixem nessas definições.

Rogério F de A

Livro ótimo. Tradução ótima. Nada o que falar sobre o autor, pai da programação moderna.

Ver todas ▼