Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

README.md

Code Formatting (Fotmatação de Código)

Bem-vindo ao Módulo 20!

Visão Geral

A escrita de código vai muito além de produzir um programa que funciona corretamente. Em projetos profissionais, também é fundamental que o código seja legível, consistente, padronizado e fácil de manter.

À medida que uma aplicação cresce e mais desenvolvedores passam a contribuir com ela, diferenças de estilo podem dificultar a leitura, aumentar conflitos em revisões de código (code reviews) e tornar a manutenção mais complexa. Para resolver esse problema, utilizam-se formatadores automáticos de código (code formatters) e ferramentas de linting, capazes de aplicar padrões de escrita de forma automática e consistente.

Neste módulo estudaremos três das principais ferramentas utilizadas para manter a qualidade visual e estrutural do código Python.

Embora todas estejam relacionadas à padronização do código, cada uma possui objetivos e características próprias. O Ruff combina linting e formatação, o Black adota uma filosofia de formatação opinativa com poucas configurações, enquanto o YAPF oferece alto nível de personalização para equipes que necessitam de regras específicas.

Ao final deste módulo, você será capaz de configurar e utilizar essas ferramentas para automatizar a formatação do código, reduzir inconsistências e integrar verificações de qualidade ao fluxo de desenvolvimento.

Objetivos do Módulo

Ao concluir este módulo, você será capaz de:

  • compreender a importância da padronização do código;
  • diferenciar formatação, linting e análise estática;
  • utilizar formatadores automáticos em projetos Python;
  • configurar Ruff, Black e YAPF;
  • automatizar a formatação do código;
  • integrar ferramentas de formatação ao editor e à pipeline de CI;
  • escolher a ferramenta mais adequada para diferentes cenários.

Por que Utilizar Ferramentas de Formatação?

Sem um padrão definido, cada desenvolvedor pode escrever código de maneira diferente, gerando inconsistências como:

  • indentação irregular; espaçamento inconsistente;
  • diferentes estilos de quebra de linha;
  • organização inadequada de imports;
  • conflitos frequentes durante code reviews.

Os formatadores automáticos eliminam essas diferenças aplicando regras consistentes em toda a base de código.

Formatação x Linting x Tipagem

Embora frequentemente utilizadas em conjunto, essas ferramentas possuem responsabilidades distintas.

Categoria Objetivo
Formatação Padronizar a aparência do código
Linting Detectar problemas de qualidade e boas práticas
Tipagem Estática Verificar a consistência dos tipos utilizados

Exemplos:

  • Black → Formatação.
  • YAPF → Formatação.
  • Ruff → Linting e formatação.
  • Mypy, Pyright e Pyre → Verificação estática de tipos.

Organização do Módulo

Este módulo está dividido em três tópicos principais:

  1. Ruff
  2. Black
  3. YAPF

Comparação das Ferramentas

Ferramenta Principal Responsabilidade
Ruff Linting, formatação e organização de imports
Black Formatação automática com estilo padronizado
YAPF Formatação altamente configurável

Fluxo de Desenvolvimento

Um fluxo comum em projetos Python é:

Escrever Código

↓

Executar Ruff

↓

Corrigir Problemas

↓

Formatar com Black ou Ruff Formatter
(ou YAPF, se adotado pelo projeto)

↓

Executar Testes

↓

Deploy

Em muitos projetos modernos, o Ruff Formatter substitui o Black, enquanto o YAPF é adotado principalmente quando há necessidade de regras de formatação personalizadas.

Como as Ferramentas se Complementam?

Embora possuam funcionalidades relacionadas, elas não são equivalentes.

Código Python
      │
      ▼
    Ruff
(Linting + Formatação)
      │
      ├──────────────┐
      ▼              ▼
  Detecta         Corrige
 Problemas      automaticamente

------------------------------

Código Python
      │
      ▼
    Black
(Formatação)

ou

    YAPF
(Formatação Personalizada)

Quando Utilizar Cada Ferramenta?

Ruff

Ideal para projetos modernos que desejam uma solução integrada de linting, formatação e organização de imports.

Black

Recomendado quando se busca um padrão único, simples e amplamente adotado pela comunidade.

YAPF

Indicado para equipes que precisam personalizar detalhadamente as regras de formatação.

Habilidades Desenvolvidas

Ao concluir este módulo, você será capaz de:

  • configurar formatadores automáticos;
  • aplicar padrões consistentes de escrita;
  • utilizar linting para melhorar a qualidade do código;
  • organizar automaticamente imports;
  • automatizar verificações de estilo;
  • reduzir conflitos em revisões de código;
  • integrar ferramentas de qualidade ao fluxo de desenvolvimento.

Casos de Uso no Mercado

  • Desenvolvimento Web
  • Projetos Open Source
  • Desenvolvimento Corporativo
  • Integração Contínua (CI)
  • Desenvolvimento de Bibliotecas
  • Equipes Ágeis

Pré-requisitos

Antes de iniciar este módulo, recomenda-se conhecer:

  • sintaxe da linguagem Python;
  • módulos e pacotes;
  • gerenciamento de dependências;
  • utilização do pyproject.toml;
  • terminal e comandos básicos.

O que vem depois?

Após dominar as ferramentas de formatação, você estará preparado para aprofundar seus conhecimentos em qualidade de software, estudando linting avançado, testes automatizados, análise estática de tipos, integração contínua e boas práticas de desenvolvimento, construindo um fluxo profissional para criação e manutenção de aplicações Python.

Resumo

O módulo Code Formatting apresenta as principais ferramentas utilizadas para manter o código Python padronizado, legível e consistente. Ao longo do módulo são estudados o Ruff, que combina linting, formatação e organização de imports, o Black, reconhecido por sua abordagem opinativa e amplamente adotada pela comunidade, e o YAPF, que oferece alto nível de personalização na formatação. Em conjunto, essas ferramentas automatizam tarefas repetitivas, reduzem inconsistências, facilitam revisões de código e contribuem para um fluxo de desenvolvimento mais produtivo e profissional.