Clean Code en C++: principios para escribir código legible

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Clean Code en C++: cómo escribir código que no sea vergonzoso mostrar a tus colegas



Todo desarrollador de C++ tarde o temprano se enfrenta a una situación en la que su propio código se convierte en un "bosque oscuro" después de un mes. Variables como int a, funciones de 300 líneas y números mágicos por todo el proyecto: ¿te suena familiar? En este artículo, desglosaremos los principios de Clean Code aplicados a C++, para que tu código no solo sea funcional, sino también comprensible para otros (y para tu yo futuro).



1. Nombrar variables, funciones y clases



Un buen nombre es la mitad de la batalla. En C++, es común usar camelCase para variables y funciones, PascalCase para clases y UPPER_CASE para constantes (aunque el C++ moderno prefiere constexpr).



Ejemplo malo:

int d; // tiempo transcurrido en díasfloat x; // multiplicador de salariobool fl; // ¿está cargado el archivo?


Ejemplo bueno:

int elapsedDays;float salaryMultiplier;bool isFileLoaded;


La regla es simple: el nombre debe responder a la pregunta "¿qué es esto?" o "¿qué hace?". Evita las abreviaturas (excepto las comúnmente aceptadas, por ejemplo, idx para índice). Para variables booleanas, usa prefijos como is, has, can.



2. Las funciones deben ser pequeñas y hacer una sola cosa



El principio clásico de Clean Code: una función debe realizar exactamente una tarea. Si no puedes pensar en un nombre corto y claro para una función, es probable que esté haciendo demasiado.



Ejemplo malo:

void processData(std::vector<int>& data) {    // ordenamiento    std::sort(data.begin(), data.end());    // eliminando duplicados    data.erase(std::unique(data.begin(), data.end()), data.end());    // calculando el promedio    double sum = 0;    for (int val : data) sum += val;    double avg = sum / data.size();    // salida    std::cout << "Average: " << avg << std::endl;}


Ejemplo bueno:

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 función resuelve una tarea, es fácil de probar y reutilizar. La longitud de una función no debe exceder las 20-30 líneas: esta es una buena pauta.



3. Evita los números mágicos y la duplicación



Los números mágicos son números cuyo significado no está claro a partir del contexto. En su lugar, usa constantes con nombre.



Ejemplo malo:

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


Ejemplo bueno:

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

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


Lo mismo se aplica a la duplicación de código. Si copias un bloque de código más de una vez, extráelo a una función. El principio DRY (Don't Repeat Yourself) es la base del código mantenible.



4. Los comentarios no son una excusa para el mal código



El mejor comentario es un código bien escrito que no requiere explicación. Los comentarios deben explicar por qué el código hace algo no obvio, no qué hace.



Ejemplo malo:



                
                

Blogs

Book Recommendations