Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
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 532 — #570<br />
✐<br />
Apéndice B. Directrices de Programación<br />
6. Separe al creador de la clase del usuario de la clase (el programador cli<strong>en</strong>te). El<br />
usuario de la clase es el «consumidor» y no necesita o no quiere conocer que<br />
hay d<strong>en</strong>tro de la clase. El creador de la clase debe ser un experto <strong>en</strong> diseño<br />
de clases y escribir la clase para que pueda ser usada por el programador más<br />
inexperto posible, y aún así funcionar de forma robusta <strong>en</strong> la aplicación. El uso<br />
de la librería será s<strong>en</strong>cillo sólo is es transpar<strong>en</strong>te.<br />
7. Cuando cree una clase, utilice nombres tan claros como sea posible. Eo objetivo<br />
debería ser que la interface del programador cli<strong>en</strong>te sea conceptualm<strong>en</strong>te simple.<br />
Int<strong>en</strong>te utilizar nombres tan claros que los com<strong>en</strong>tarios sean innecesarios.<br />
Luego, use sobrecarga de funciones y argum<strong>en</strong>tos por defecto para crear un<br />
interface intuitiva y fácil de usar.<br />
8. El control de acceso permite (al creador de la clase) cambiar tanto como sea<br />
posible <strong>en</strong> el futuro sin afectar al código del cli<strong>en</strong>te <strong>en</strong> el que se usa la clase.<br />
FIXME:Is this light, mant<strong>en</strong>ga todo tan privado como sea posible, y haga pública<br />
solam<strong>en</strong>te la interfaz de la clase, usando siempre métodos <strong>en</strong> lugar de<br />
atributos. Ponga atributos públicos sólo cuando se vea obligado. Si una parte<br />
de su clase debe quedar expuesta a clases derivadas como protegida, proporcione<br />
una interface con funciones <strong>en</strong> lugar de exponer los datos reales. De este<br />
modo, los cambios <strong>en</strong> la implem<strong>en</strong>tación t<strong>en</strong>drán un impacto mínimo <strong>en</strong> las<br />
clases derivadas.<br />
9. FIXME No caiga <strong>en</strong> FIXME:analysis paralysis. Hay algunas cosas que no apr<strong>en</strong>derá<br />
hasta que empiece a codificar y consiga algún tipo de sistema. <strong>C++</strong> ti<strong>en</strong>e<br />
mecanimos de seguridad de fábrica, dejelos trabajar por usted. Sus errores <strong>en</strong><br />
una clase o conjunto de clases no destruirá la integridad del sistema completo.<br />
10. El análisis y diseño debe producir, como mínimo, las clases del sistema, sus<br />
interfaces públicas, y las relaciones con otras clases, especialm<strong>en</strong>te las clases<br />
base. Si su metodología de diseño produce más que eso, preguntese a si mismo<br />
si todas las piezas producidas por la metodología ti<strong>en</strong>e valor respecto al tiempo<br />
de vide del programa. Si no lo ti<strong>en</strong><strong>en</strong>, no mant<strong>en</strong>ga nada que no contribuya a<br />
su productividad, este es un FIXME:fact of life] que muchos métodos de diseño<br />
no ti<strong>en</strong><strong>en</strong> <strong>en</strong> cu<strong>en</strong>ta.<br />
11. Escriba primero el código de las pruebas (antes de escribir la clase), y guardelo<br />
junto a la clase. Automatice la ejecución de las pruebas con un makefile<br />
o herrami<strong>en</strong>ta similar. De este modo, cualquier cambio se puede verificar<br />
automáticam<strong>en</strong>te ejecutando el código de prueba, lo que permite descubrir<br />
los errores inmediatamante. Como sabe que cu<strong>en</strong>ta con esa red de seguridad,<br />
puede arriesgar haci<strong>en</strong>do cambios más grandes cuando descubra la necesidad.<br />
Recuerde que las mejoras más importantes <strong>en</strong> los l<strong>en</strong>guajes provi<strong>en</strong><strong>en</strong> de las<br />
pruebas que hace el compilador: chequeo de tipos, gestión de excepciones, etc.,<br />
pero estas características no puede ir muy lejos. Debe hacer el resto del camino<br />
creando un sistema robusto rell<strong>en</strong>ando las pruebas que verifican las características<br />
específicas de la clase o programa concreto.<br />
12. Escriba primero el código de las pruebas (antes de escribir la clase) para verificar<br />
que el diseño de la clase está completo. Si no puede escribir el código<br />
de pruebas, significa que no sabe que aspecto ti<strong>en</strong>e la clases. En resum<strong>en</strong>, el<br />
echo de escribir las pruebas a m<strong>en</strong>udo desvela características adicionales o restricciones<br />
que necesita la clase - esas características o restricciones no siempre<br />
aparec<strong>en</strong> durante el análisis y diseño.<br />
532<br />
✐<br />
✐<br />
✐<br />
✐