Este documento puede ser objeto de nuevas revisiones.
La base de código aumenta significativamente a medida que se desarrolla un proyecto, dependiendo del objetivo y el tipo de este. Una base de código inconsistente pone en peligro la legibilidad y la facilidad de mantenimiento, lo que afecta a la productividad personal o del equipo.
Puede que las normas de programación no sean necesarias para bases de código de uso único. Sin embargo, es imprescindible seguir una guía de estilo de programación para evitar inconsistencias en la base de código y no caer en el «infierno de la depuración».
El «código limpio» no existe, y es un mito, ya que la percepción de lo que es un código limpio es subjetiva para cada persona o equipo. El objetivo de este documento es evitar escribir código ilegible y no seguir a la letra el concepto de «código limpio ».
Un ejemplo simplificado de código ofuscado y profundamente anidado)
#include <iostream>
#include <cstdlib>
void mergeSort(int *arr, int l, int r) {
if (l < r) {
int m = l + (r - l) / 2;
mergeSort(arr, l, m);
mergeSort(arr, m + 1, r);
int n1 = m - l + 1;
int n2 = r - m;
int *L = (int*) malloc(n1 * sizeof(int));
int *R = (int*) malloc(n2 * sizeof(int));
for (int i = 0; i < n1; i++) L[i] = arr[l + i];
for (int j = 0; j < n2; j++) R[j] = arr[m + 1 + j];
int i = 0, j = 0, k = l;
while (i < n1) {
if (j < n2) {
if (L[i] <= R[j]) {
arr[k] = L[i];
i++;
} else {
arr[k] = R[j];
j++;
}
} else {
arr[k] = L[i];
i++;
}
k++;
}
while (j < n2) {
arr[k] = R[j];
j++;
k++;
}
free(L);
free(R);
}
}
(en lugar de adoptar las de otros).
En Internet hay disponibles numerosas guías de estilo y convenciones de programación en C++ bien documentadas, como la guía de estilo de Google y el estándar de codificación de Unreal. A pesar de su disponibilidad, conocer los motivos que hay detrás de las reglas tiene un valor incalculable.
C++ Coding Standards | Pope's Dev Docs