Clean Code em C++: princípios para escrever código legível

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course
Aqui está a tradução solicitada:

Clean Code em C++: como escrever código que não é vergonha mostrar aos colegas



Todo desenvolvedor C++ mais cedo ou mais tarde enfrenta uma situação em que o próprio código se transforma em uma "floresta escura" depois de um mês. Variáveis como int a, funções com 300 linhas e números mágicos por todo o projeto — familiar? Neste artigo, vamos analisar os princípios do Clean Code aplicados ao C++, para que seu código não seja apenas funcional, mas também compreensível para outros (e para você no futuro).



1. Nomenclatura de variáveis, funções e classes



Um bom nome já é metade do trabalho. Em C++, é comum usar camelCase para variáveis e funções, PascalCase para classes e UPPER_CASE para constantes (embora no C++ moderno se prefira constexpr).



Exemplo ruim:

int d; // elapsed time in daysfloat x; // salary multiplierbool fl; // is file loaded?


Exemplo bom:

int elapsedDays;float salaryMultiplier;bool isFileLoaded;


A regra é simples: o nome deve responder à pergunta "o que é isso?" ou "o que faz?". Evite abreviações (exceto as amplamente aceitas, como idx para índice). Para variáveis booleanas, use os prefixos is, has, can.



2. Funções devem ser pequenas e fazer uma única coisa



O princípio clássico do Clean Code — uma função deve executar exatamente uma tarefa. Se você não consegue pensar em um nome curto e claro para a função — provavelmente ela está fazendo demais.



Exemplo ruim:

void processData(std::vector<int>& data) {    // ordenação    std::sort(data.begin(), data.end());    // remoção de duplicatas    data.erase(std::unique(data.begin(), data.end()), data.end());    // cálculo da média    double sum = 0;    for (int val : data) sum += val;    double avg = sum / data.size();    // saída    std::cout << "Average: " << avg << std::endl;}


Exemplo bom:

std::vector<int> sortAndUnique(std::vector<int> data) {    std::sort(data.begin(), data.end());    data.erase(std::unique(data.begin(), data.end()), data.end());    return data;}

double calculateAverage(const std::vector<int>& data) { if (data.empty()) return 0.0; double sum = std::accumulate(data.begin(), data.end(), 0.0); return sum / data.size();}

void printAverage(const std::vector<int>& data) { auto processed = sortAndUnique(data); double avg = calculateAverage(processed); std::cout << "Average: " << avg << std::endl;}


Cada função resolve uma única tarefa, é facilmente testável e reutilizável. O tamanho da função não deve exceder 20-30 linhas — este é um bom parâmetro de referência.



3. Evite números mágicos e duplicação



Números mágicos são números cujo valor não é claro pelo contexto. Em vez deles, use constantes nomeadas.



Exemplo ruim:

double calculatePrice(double base) {    return base * 1.2 + 5.0;}


Exemplo bom:

constexpr double TAX_RATE = 1.2;constexpr double DELIVERY_FEE = 5.0;

double calculatePrice(double basePrice) { return basePrice * TAX_RATE + DELIVERY_FEE;}


O mesmo se aplica à duplicação de código. Se você copia um bloco de código mais de uma vez — extraia-o para uma função. A regra DRY (Don't Repeat Yourself) é a base de um código sustentável.



4. Comentários não são desculpa para código ruim



O melhor comentário é um código bem escrito que não requer explicações. Comentários devem explicar por que o código faz algo não óbvio, e não o que ele faz.



Exemplo ruim:



                
                

Blogs

Book Recommendations