Código limpio en C++: cómo escribir para no avergonzarse dentro de un año

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

Por qué el código limpio en C++ no es pedantería, sino respeto



Si alguna vez has abierto un proyecto escrito "a las apuradas" hace un año y no podías entender qué hace una función llamada doStuff() — sabes de qué hablo. El código limpio en C++ no es solo estética. Es ahorro de tiempo, nervios y dinero. C++ es un lenguaje potente, pero también traicionero: la memoria se gestiona manualmente, las plantillas pueden generar monstruos y la sobrecarga de operadores puede ser magia real. Sin disciplina, el código se convierte rápidamente en "espagueti".



En este artículo, analizaremos cómo escribir código limpio en C++ para que sea fácil de leer, mantener y ampliar. Sin rodeos: solo práctica, ejemplos y principios probados.



Regla n.º 1: La nomenclatura es el 50 % del éxito



Los nombres de variables, funciones y clases deben responder a la pregunta "¿qué es esto?" o "¿qué hace?". Olvídate de int x y void f(). Usa nombres significativos.



Mal ejemplo

int d; // ¿qué es d? ¿distancia? ¿fecha? ¿tonto?void p() { // ¿imprime? ¿analiza? ¿llora?    // ...}


Buen ejemplo

int distanceInMeters;void printUserProfile() {    // ...}


Consejo: Mantén un solo estilo. Para C++, el estándar es camelCase para variables y funciones, PascalCase para clases. No mezcles snake_case y camelCase en un mismo proyecto: esto reduce la legibilidad.



Regla n.º 2: Las funciones deben ser pequeñas y hacer una sola cosa



El principio de responsabilidad única (Single Responsibility) no solo funciona para las clases, sino también para las funciones. Una función ideal tiene entre 5 y 20 líneas. Si una función hace más de una cosa, divídela.



Mal

void processData(vector<int>& data) {    // ordenamiento    sort(data.begin(), data.end());    // filtrado    vector<int> filtered;    for (int x : data) if (x > 0) filtered.push_back(x);    // salida    for (int x : filtered) cout << x << " ";}


Bien

vector<int> filterPositive(const vector<int>& data) {    vector<int> result;    for (int x : data) if (x > 0) result.push_back(x);    return result;}

void printData(const vector<int>& data) { for (int x : data) cout << x << " ";}

void processData(vector<int>& data) { sort(data.begin(), data.end()); auto filtered = filterPositive(data); printData(filtered);}


Ahora cada función se puede reutilizar y probar por separado. El código limpio en C++ es modularidad.



Regla n.º 3: Evita números y cadenas mágicas



Los números y cadenas cuyo valor no se entiende por el contexto son malos. Conviértelos en constantes.



Mal

if (temperature > 100) {    cout << "¡Peligro!";}


Bien

constexpr int MAX_SAFE_TEMPERATURE = 100;

if (temperature > MAX_SAFE_TEMPERATURE) { cout << "¡Peligro!";}


Ahora, si el umbral cambia, lo modificarás en un solo lugar. Y no tendrás que buscar todos los 100 en el código.



Regla n.º 4: Los comentarios no son una excusa para el mal código



El mejor comentario es el que no hace falta, porque el código habla por sí mismo. No escribas "qué hace el código" — eso se ve. Escribe "por qué lo hace".



Mal comentario

// incrementamos i en 1i++;


Buen comentario

// Usamos preincremento para tipos POD — más rápido++i;


Usa // TODO: para secciones incompletas, pero no abuses. El código ideal no necesita explicaciones.



Regla n.º 5: Usa RAII y punteros inteligentes



C++ es famoso por la gestión manual de memoria, pero en el C++ moderno (C++11 y posteriores) hay herramientas potentes

Blogs

Book Recommendations