13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

✐<br />

✐<br />

✐<br />

“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 525 — #563<br />

✐<br />

A.4. Paréntesis, llaves e ind<strong>en</strong>tación<br />

La marca de fin de listado simplem<strong>en</strong>te le indica a ExtractCode.cpp que ese<br />

es el final del listado, pero la marca de comi<strong>en</strong>zo incluye información sobre el subdirectorio<br />

al que corresponde el fichero (normalm<strong>en</strong>te organizado por capítulos, así<br />

que si corresponde al Capítulo 8 debería t<strong>en</strong>er una etiqueta como C08), seguido de<br />

dos puntos y el nombre del fichero.<br />

Como ExtractCode.cpp también crea un makefile para cada subdirectorio,<br />

la información de cómo construir el programa y la línea de comando que se debe<br />

usar para probarlo también se incorpora a los listados. Si un programa es autónomo<br />

(no necesita ser <strong>en</strong>lazado con nada más) no ti<strong>en</strong>e información extra. Esto también es<br />

cierto para los ficheros de cabecera. Sin embargo, si no conti<strong>en</strong>e un main() y necesita<br />

<strong>en</strong>lazarse con algún otro, aparece un {O} después del nombre del fichero. Si ese<br />

listado es el programa principal pero necesita ser <strong>en</strong>lazado con otros compon<strong>en</strong>tes,<br />

hay una línea adicional que comi<strong>en</strong>za con //{L} y continúa con el nombre de todos<br />

los ficheros con los que debe <strong>en</strong>lazarse (sin ext<strong>en</strong>siones, dado que puede variar <strong>en</strong>tre<br />

plataformas).<br />

Puede <strong>en</strong>contrar ejemplos a lo largo de todo el libro.<br />

Cuando un fichero debe extraerse sin que las marcas de inicio y fin deban incluirse<br />

<strong>en</strong> el fichero extraído (por ejemplo, si es un fichero con datos para una prueba) la<br />

marca de inicio va seguida de un ’!’.<br />

A.4. Paréntesis, llaves e ind<strong>en</strong>tación<br />

Habrá notado que el estilo de este libro es difer<strong>en</strong>te a la mayoría de los estilos<br />

C tradicionales. Por supuesto, cualquiera puede p<strong>en</strong>sar que su propio estilo es más<br />

racional. Sin embargo, el estilo que se emplea aquí ti<strong>en</strong>e una lógica más simple, que<br />

se pres<strong>en</strong>tará mezclada con las de otros estilos desarrollados.<br />

El estilo está motivado por una cosa: la pres<strong>en</strong>tación, tanto impresa como <strong>en</strong> un<br />

seminario. Quizá sus necesidades sean difer<strong>en</strong>tes porque no realiza muchas pres<strong>en</strong>taciones.<br />

Sin embargo, el código real se lee muchas más veces de las que se escribe,<br />

y por eso debería ser fácil de leer. Mis dos criterios más importantes son la «escaneabilidad»<br />

(que se refiere a la facilidad con la que el lector puede compr<strong>en</strong>der el<br />

significado de una única línea) y el número de líneas que cab<strong>en</strong> <strong>en</strong> una página. Lo<br />

segundo puede sonar gracioso, pero cuando uno da una charla, distrae mucho a la<br />

audi<strong>en</strong>cia que el pon<strong>en</strong>te t<strong>en</strong>ga que avanzar y retroceder diapositivas, y sólo unas<br />

pocas líneas de más puede provocar este efecto.<br />

Todo el mundo parece estar de acuerdo <strong>en</strong> que el código que se pone d<strong>en</strong>tro de<br />

llaves debe estar ind<strong>en</strong>tado. En lo que la g<strong>en</strong>te no está de acuerdo - y es el sitio donde<br />

más inconsist<strong>en</strong>cia ti<strong>en</strong><strong>en</strong> los estilos - es: ¿Dónde debe ir la llave de apertura Esta<br />

única cuestión, creo yo, es la que causa la mayoría de las variaciones <strong>en</strong> los estilos<br />

de codificación (Si quiere ver una <strong>en</strong>umeración de estilos de codificación vea <strong>C++</strong><br />

Programming Guidelines, de [FIXME:autores] Tom Plum y Dan Saks, Plum Hall 1991),<br />

Int<strong>en</strong>taré conv<strong>en</strong>cerle de que muchos de los estilos de codificación actuales provi<strong>en</strong><strong>en</strong><br />

de la restricciones previas al C Estándar (antes de los prototipos de función) de<br />

manera que no son apropiadas actualm<strong>en</strong>te.<br />

Lo primero, mi respuesta a esa pregunta clave: la llave de apertura debería ir<br />

siempre <strong>en</strong> la misma línea que el «precursor» (es decir «cualquier cosa de la que<br />

sea cuerpo: una clase, función, definición de objeto, s<strong>en</strong>t<strong>en</strong>cia if, etc». Es una regla<br />

única y consist<strong>en</strong>te que aplico a todo el código que escribo, y hace que el formateo<br />

de código sea mucho más s<strong>en</strong>cillo. Hace más s<strong>en</strong>cilla la «escaneabilidad» - cuando<br />

se lee esta línea:<br />

525<br />

✐<br />

✐<br />

✐<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!