Desenvolvedor de Software e Especialista em Tecnologia da Informação

POV: O truque de JavaScript que todo DEV Sênior usa 🤯💻

Uma das maiores diferenças entre um desenvolvedor iniciante e um desenvolvedor experiente não está em decorar mais comandos, mas em escrever códigos mais organizados. Neste artigo, vamos explorar a técnica de Extract Method (Extração de Método), uma das práticas mais poderosas do Clean Code que pode transformar completamente a qualidade do seu código JavaScript.

📅  5 de junho de 2026
⏱️  10 min
🏷️  Javascript
📚 artigos +


Extract Method: A técnica que separa desenvolvedores iniciantes de profissionais experientes

Uma das maiores diferenças entre um desenvolvedor iniciante e um desenvolvedor experiente não está em decorar mais comandos, mas em escrever códigos mais organizados. Neste Short mostro uma técnica extremamente utilizada por desenvolvedores experientes: Extract Method (Extração de Método).

POV: O truque de JavaScript que todo DEV Sênior usa 🤯💻

Extract Method Refatoração JavaScript Clean Code JavaScript Moderno Boas Práticas Programação Web Responsabilidade Única Frontend JavaScript Programação Funcional Desenvolvimento Web RogerioPontesTI

"A diferença entre código que funciona e código que é bem escrito está na capacidade de extrair responsabilidades. Um bom desenvolvedor não escreve código que apenas funciona — ele escreve código que é fácil de entender, testar e manter."


O que é Extract Method?

A técnica de Extract Method (Extração de Método) é uma das refatorações mais fundamentais e poderosas do desenvolvimento de software. Ela consiste em extrair um trecho de código de uma função maior e colocá-lo em uma nova função com um nome descritivo.

O objetivo é simples: transformar funções longas e complexas em funções menores, focadas em uma única responsabilidade. Quando aplicada corretamente, essa técnica torna o código mais legível, testável e fácil de manter.

O problema do código monolítico

Vamos começar com um exemplo clássico de código que funciona, mas que tem problemas de organização:

ANTES

function calcular(preco, desconto, tipo){
    if(tipo.toLowerCase() === "vip"){
        return preco - (preco * desconto / 100);
    }

    if(tipo.toLowerCase() === "normal"){
        return preco;
    }
}

console.log(100, 50, "vip");
        

Este código funciona perfeitamente. Mas observe os problemas:

  • Responsabilidade única violada: A função faz mais de uma coisa (verifica o tipo E calcula o desconto)
  • Duplicação de lógica: O cálculo do desconto está dentro do if, sem possibilidade de reuso
  • Dificuldade de teste: Para testar o cálculo do desconto, você precisa testar toda a função
  • Baixa legibilidade: A lógica de desconto está escondida dentro do if

Aplicando Extract Method

Agora vamos aplicar a técnica de Extract Method para melhorar este código:

DEPOIS

function aplicarPreco(preco, desconto){
    return preco - (preco * desconto / 100);
}

function calcular(preco, desconto, tipo){
    let l = tipo.toLowerCase();

    if(l === "vip"){
        return aplicarPreco(preco, desconto);
    }

    if(tipo.toLowerCase() === "normal"){
        return preco;
    }

    return 0;
}

console.log(100, 50, "vip");
        

O que mudou:

  • Nova função aplicarPreco: Responsável apenas por aplicar o desconto
  • Função calcular mais enxuta: Agora ela se concentra em decidir qual lógica aplicar
  • Lógica de desconto reutilizável: Podemos usar aplicarPreco em outros lugares
  • Código mais legível: O nome da função explica o que ela faz

✅ Benefício imediato: Agora você pode testar a lógica de desconto separadamente, sem precisar testar toda a lógica de tipos de cliente.


Comparação lado a lado

Veja a diferença visual entre as duas abordagens:

ANTES

function calcular(preco, desconto, tipo){
    if(tipo.toLowerCase() === "vip"){
        return preco - (preco * desconto / 100);
    }

    if(tipo.toLowerCase() === "normal"){
        return preco;
    }
}
                
DEPOIS

function aplicarPreco(preco, desconto){
    return preco - (preco * desconto / 100);
}

function calcular(preco, desconto, tipo){
    let l = tipo.toLowerCase();

    if(l === "vip"){
        return aplicarPreco(preco, desconto);
    }
}
                

Benefícios do Extract Method

📖 Legibilidade

Funções menores com nomes descritivos contam a história do que o código faz. É mais fácil entender o fluxo de uma função quando ela tem poucas linhas.

🧪 Testabilidade

Funções pequenas são mais fáceis de testar. Você pode testar a lógica de desconto isoladamente, sem precisar mockar dependências.

♻️ Reutilização

Código extraído pode ser usado em outros lugares. Se você precisa calcular desconto em outro contexto, basta chamar a função.

🔧 Manutenção

Alterações são isoladas. Se a regra de desconto mudar, você altera apenas um lugar. Menos risco de introduzir bugs.


Exemplos práticos de Extract Method

Exemplo 1: Validação de dados

EXEMPLO 1

// ❌ ANTES - Código confuso e difícil de testar
function cadastrarUsuario(dados) {
    if (!dados.nome || dados.nome.length < 3) {
        throw new Error("Nome inválido");
    }
    if (!dados.email || !dados.email.includes("@")) {
        throw new Error("Email inválido");
    }
    if (dados.idade < 18) {
        throw new Error("Menor de idade");
    }
    // ... lógica de cadastro
}

// ✅ DEPOIS - Código organizado e testável
function validarNome(nome) {
    if (!nome || nome.length < 3) {
        throw new Error("Nome inválido");
    }
    return true;
}

function validarEmail(email) {
    if (!email || !email.includes("@")) {
        throw new Error("Email inválido");
    }
    return true;
}

function validarIdade(idade) {
    if (idade < 18) {
        throw new Error("Menor de idade");
    }
    return true;
}

function cadastrarUsuario(dados) {
    validarNome(dados.nome);
    validarEmail(dados.email);
    validarIdade(dados.idade);
    // ... lógica de cadastro
}
        

Exemplo 2: Cálculo de frete

EXEMPLO 2

// ❌ ANTES - Tudo em uma função
function calcularFrete(pedido) {
    let frete = 0;
    
    if (pedido.peso <= 1) {
        frete = 10;
    } else if (pedido.peso <= 5) {
        frete = 20;
    } else {
        frete = 35;
    }
    
    if (pedido.regiao === "Norte" || pedido.regiao === "Nordeste") {
        frete += 15;
    }
    
    return frete;
}

// ✅ DEPOIS - Responsabilidades separadas
function calcularFretePorPeso(peso) {
    if (peso <= 1) return 10;
    if (peso <= 5) return 20;
    return 35;
}

function calcularFretePorRegiao(regiao) {
    const regioesCaras = ["Norte", "Nordeste"];
    return regioesCaras.includes(regiao) ? 15 : 0;
}

function calcularFrete(pedido) {
    return calcularFretePorPeso(pedido.peso) + calcularFretePorRegiao(pedido.regiao);
}
        

Clean Code e o Extract Method

O Extract Method é uma das práticas mais recomendadas por Robert C. Martin (Uncle Bob) no livro "Clean Code". Segundo ele, funções devem ser pequenas e fazer apenas uma coisa.

📖 Uncle Bob diz: "O primeiro critério para um bom código é que ele deve ser fácil de entender. Extrair métodos é a ferramenta mais poderosa para alcançar isso."

Os princípios do Clean Code que se aplicam ao Extract Method:

  • SRP (Single Responsibility Principle): Cada função deve ter uma única responsabilidade
  • DRY (Don't Repeat Yourself): Evite duplicação de lógica
  • KISS (Keep It Simple, Stupid): Mantenha as funções simples e focadas
  • Nomes Descritivos: O nome da função deve explicar o que ela faz

Quando usar Extract Method?

✅ Quando usar
  • Funções com mais de 5-10 linhas
  • Lógica duplicada em vários lugares
  • Dificuldade em entender o que a função faz
  • Função com múltiplas responsabilidades
  • Dificuldade em testar partes específicas
❌ Quando evitar
  • Funções já pequenas e simples
  • Lógica que não será reutilizada
  • Extração que cria complexidade desnecessária
  • Funções que só serão chamadas em um lugar

Conclusão

A técnica de Extract Method é uma das ferramentas mais poderosas que um desenvolvedor pode ter em seu arsenal. Ela transforma código confuso e difícil de manter em código limpo, organizado e profissional.

Ao aplicar esta técnica você:

  • ✅ Torna seu código mais legível para outros desenvolvedores
  • ✅ Facilita testes automatizados
  • ✅ Permite reutilização de lógica
  • ✅ Reduz bugs e facilita manutenção
  • ✅ Aplica princípios de Clean Code

💡 Lembre-se: A diferença entre código que funciona e código que é bem escrito está na organização. Extrair métodos é o primeiro passo para escrever código que outros desenvolvedores vão gostar de ler e manter.


🤔 O que você achou?

💬 Quer aprender JavaScript do ZERO? Comece agora a escrever seu primeiro código e seus fundamentos!


❓ FAQ: Perguntas Frequentes sobre Refatoração e Extract Method

É o processo de melhorar a estrutura interna de um código sem alterar seu comportamento externo. O objetivo é tornar o código mais legível, mais fácil de manter e menos propenso a bugs.

É uma técnica de refatoração que consiste em extrair um trecho de código para uma nova função, com um nome descritivo. Isso torna o código mais limpo, organizado e reutilizável.

Sim. A extração de métodos é uma das práticas mais comuns recomendadas por Robert C. Martin (Uncle Bob) no livro Clean Code. É considerada essencial para escrever código de qualidade profissional.

Porque códigos menores são mais fáceis de entender, testar, reutilizar e manter. Uma função que faz apenas uma coisa é mais fácil de debugar e modificar do que uma função que faz múltiplas coisas.

Sempre que perceber duplicação de lógica, excesso de responsabilidades em uma função ou dificuldade para entender o próprio código. A refatoração deve ser contínua, não um evento isolado.

Não. O Extract Method é utilizado em praticamente todas as linguagens modernas, como PHP, Java, C#, Python, TypeScript, Ruby e muitas outras. É um conceito universal de engenharia de software.

Não há uma regra exata, mas funções com mais de 5-10 linhas já merecem atenção. O importante é que a função faça apenas uma coisa e seu nome descreva claramente o que ela faz. Se você precisa de comentários para explicar o que a função faz, ela provavelmente está grande demais.

Se feito sem cuidado, sim. Por isso é importante ter testes automatizados antes de refatorar. Os testes garantem que o comportamento externo não foi alterado. Refatoração sem testes é perigosa.

🎬 Assista ao Vídeos completo sobre Refatoração

O vídeo foi feito em Javascript mais o conceito pode ser utilizado em qualquer outra linguagem de programação..

🎬 Assista ao Vídeos completo sobre Refatoração


🔗 Conecte-se Comigo


💬 Agora conta aí: você costuma revisar seu código para deixar ele mais limpo ou se funcionou você não mexe mais por medo de quebrar? 👇

#Javascript #Refactoring #CleanCode #Frontend #Programacao #Developer #Dev #WebDevelopment #JavascriptTips #Coding #PHP #Laravel #RogerioPontesTI