Guía de estilo de programación en C++ estructurado
Guía de estilo de programación en C++ estructurado
Guía de estilo de programación en C++ estructurado
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
1 Introducción<br />
En este docum<strong>en</strong>to se explica brevem<strong>en</strong>te, y con ejemplos, cómo escribir programas más legibles.<br />
A lo largo <strong>de</strong> su vida profesional, cualquier programador se plantea la pregunta <strong>de</strong> cómo escribir sus<br />
programas <strong>de</strong> manera que sean más legibles, y por tanto que puedan ser mant<strong>en</strong>idos (corrección <strong>de</strong><br />
errores, ampliación <strong>de</strong> funcionalidad) con facilidad, tanto por él mismo como por otros<br />
programadores (una situación típica <strong>en</strong> cualquier empresa).<br />
Dado que la misma situación <strong>en</strong> cuanto a legibilidad <strong>de</strong> código suele ser resuelta por<br />
distintos programadores <strong>de</strong> la misma forma, pero con distintos matices <strong>de</strong> difer<strong>en</strong>ciación, es<br />
interesante seguir una guía <strong>de</strong> <strong>estilo</strong> que nos explique como otros resolvieron ese mismo problema,<br />
hasta que dicha solución se convirtió <strong>en</strong> un estándar.<br />
2 Indicaciones g<strong>en</strong>erales<br />
El propósito <strong>de</strong> seguir una norma <strong>de</strong> <strong>estilo</strong> es hacer que el código fu<strong>en</strong>te <strong>de</strong> un programa sea tan<br />
legible como sea posible. Así, hay tres puntos básicos que se <strong>de</strong>b<strong>en</strong> cuidar: el espaciado horizontal,<br />
el espaciado vertical y la in<strong>de</strong>ntación. El espaciado horizontal consiste <strong>en</strong> que las líneas <strong>en</strong> las que<br />
esté dividido el código fu<strong>en</strong>te <strong>de</strong>b<strong>en</strong> ser <strong>de</strong> una longitud máxima lo más próxima posible a 80<br />
caracteres, ya que al imprimir el código <strong>en</strong> papel cualquier línea superior a 80 columnas se <strong>de</strong>scarta<br />
automáticam<strong>en</strong>te.<br />
Uno <strong>de</strong> los problemas que se pue<strong>de</strong> <strong>en</strong>contrar al codificar es la manera más correcta para<br />
dividir una línea muy larga. Respuestas comunes a esta pregunta son: antes <strong>de</strong> una subexpresión,<br />
antes <strong>de</strong> un operador, o antes <strong>de</strong> un paréntesis. Por ejemplo:<br />
int x = ( (a * b + c ) / ( c * d * d ) )<br />
+ ( a / ( b * c ) )<br />
+ ( ( 3.1451927 * b ) + d )<br />
;<br />
Los operadores <strong>de</strong>b<strong>en</strong> separarse mediante espacios para mayor claridad, a excepción hecha<br />
<strong>de</strong> operadores unarios como el increm<strong>en</strong>to o <strong>de</strong>crem<strong>en</strong>to, tanto postfijo como prefijo, que suel<strong>en</strong><br />
colocarse pegados al operando al que modifican (lo más típico, por claridad), pero también pue<strong>de</strong>n<br />
colocarse espaciados, a elección <strong>de</strong>l programador.<br />
int x = ++ i;<br />
int y = j++ + ++ x;<br />
El espaciado vertical consiste <strong>en</strong> cuántas líneas ocupa una función o una estructura, <strong>en</strong> el<br />
código fu<strong>en</strong>te. En g<strong>en</strong>eral, es útil autoimponerse un límite <strong>de</strong> una hoja por cada función o<br />
procedimi<strong>en</strong>to. Es extraño, siempre que la misma no consista <strong>en</strong> multitud <strong>de</strong> acciones repetitivas<br />
(como escribir <strong>en</strong> un archivo), que una función bi<strong>en</strong> diseñada ocupe más allá <strong>de</strong> un folio. En caso<br />
contrario, será conv<strong>en</strong>i<strong>en</strong>te consi<strong>de</strong>rar que posiblem<strong>en</strong>te sea interesante subdividirlo <strong>en</strong> varias<br />
subfunciones (probablem<strong>en</strong>te <strong>de</strong> acceso privado).<br />
A<strong>de</strong>más, <strong>en</strong> el espaciado vertical intervi<strong>en</strong><strong>en</strong> las llaves que se emplean para marcar el<br />
comi<strong>en</strong>zo y fin <strong>de</strong>l cuerpo <strong>de</strong> una función, <strong>de</strong> un bucle, ... cada una <strong>de</strong> esas llaves pue<strong>de</strong> llegar a<br />
consumir una línea por sí sola, incluso dos. Así, para salvar algo <strong>de</strong> espacio vertical, se suel<strong>en</strong><br />
mant<strong>en</strong>er las llaves <strong>de</strong> apertura y cierre, cada una <strong>en</strong> una línea, para el cuerpo <strong>de</strong> las funciones, y <strong>en</strong><br />
cambio colocar la llave <strong>de</strong> apertura <strong>en</strong> la misma línea para bucles y estructuras <strong>de</strong> <strong>de</strong>cisión. Por<br />
ejemplo: