1. Escriba sus programas de C sencillo y directamente. Esto a veces se conoce como
mantelo simple. No estire el lenguaje intentando usos raros. 2. Lea los manuales de la versin de C que est empleando. Consulte estos manuales con frecuencia para asegurar que tenga presente el rico conjunto de caractersticas de C y que est empleando correctamente estas caractersticas. 3. Su computadora y su compilador son buenos maestros. Si tras la lectura de su manual del lenguaje C no est seguro del funcionamiento de alguna caracterstica de C, experimente con un pequeo programa de prueba y vea lo que sucede. Ajuste las opciones de su compilador para que le devuelva el mximo de avisos. Estudie cada mensaje que aparezca al compilar sus programas y corrjalos para eliminar los mensajes. 4. Cada programa debe comenzar con un comentario que describa su propsito. 5. Muchos programadores hacen que el ltimo carcter impreso por una funcin sea un saldo de lnea (\n) Esto asegura que la funcin dejar el cursor al inicio de una nueva lnea. Las convenciones de esta naturaleza promueven la reutilizacin del software, meta clave en los entornos de desarrollo de software. 6. Dentro de los corchetes que definen el cuerpo de una funcin, sangre el cuerpo de la funcin un nivel. Esto resalta la estructura funcional de los programas y ayuda a simplificar su lectura. 7. Establezca una convencin para el tamao de las sangras y luego aplquela de manera uniforme. La tecla Tab sirve para crear sangras, pero las tabulaciones pueden variar. Recomendamos manejar tabulaciones de de pulgada o (de preferencia) de tres espacios por cada nivel de sangra. 8. Algunos programadores prefieren declarar las variables en lneas separadas. Este formato permite la fcil insercin de comentarios descriptivos junto a cada declaracin. 9. Para hacer ms legibles sus programas, ponga espacios despus de las comas (, ) 10. La declaracin de variables con nombres significativos ayuda a que los programas estn auto documentados, es decir, que resulte ms fcil entenderlos simplemente leyndolos en lugar de tener que consultar manuales o hacer referencia a demasiados comentarios. 11. Evite los identificadores que comiencen con uno o dos caracteres de subrayado, pues podra ser que el compilador de C utilice nombres de este tipo para fines internos. Esto evitar que los nombres que usted determine se confundan con los nombres que el compilador seleccione. 12. Siempre inserte una lnea en blanco antes de una declaracin que aparezca entre instrucciones ejecutables. Esto resalta las declaraciones y contribuye a la claridad del programa. 13. Si prefiere poner declaraciones al inicio de una funcin, seprelas de las instrucciones ejecutables de la funcin por medio de una lnea en blanco que resalte el punto donde terminan las declaraciones e inician las instrucciones ejecutables. 14. Ponga espacios en ambos lados de los operadores binarios. Con esto se resalta el operador y se simplifica la lectura del programa. 15. Como en lgebra, para hacer ms clara a una expresin es aceptable agregarle parntesis innecesarios. Dichos parntesis se llaman parntesis redundantes. Estos se emplean normalmente para agrupar subexpresiones de expresiones ms grandes. 16. Sangre la instruccin del cuerpo de una estructura if para que resalte la estructura y simplificar la lectura del programa. 17. En los programas no debe haber ms que una instruccin por lnea. 18. Es posible distribuir una instruccin grande sobre varias lneas. Si tiene que dividir una instruccin sobre varias lneas, seleccione puntos de ruptura que tengan sentido, como despus de una coma en el caso de una lista separada por comas o despus de un operador en el caso de una expresin larga. Si necesita dividir una instruccin en varias lneas, sangre todas las lneas subsecuentes. 19. Al escribir expresiones que contengan muchos operadores, consulte la tabla de precedencia de los operadores. Confirme que los operadores de la expresin se ejecutan en el orden que espera. Si no est seguro del orden de evaluacin de una expresin compleja, coloque parntesis para forzar el orden, justo igual como lo hara en una expresin algebraica. Adems, observe que algunos operadores, como el de asignacin (=), se asocian de derecha a izquierda, y no de izquierda a derecha. 20. La consistencia en la aplicacin razonable de convenciones de sangrado a sus programas simplificar notablemente su lectura. Sugerimos una tabulacin fija de de pulgada o tres espacios en blanco por cada sangra. 21. El seudo cdigo se emplea con frecuencia para pensar el programa durante el proceso de diseo. Luego el programa en seudo cdigo se convierte a su equivalente en C. 22. Sangre las instrucciones de ambos cuerpos de las estructuras if/else. 23. Si hay varios niveles de sangrado, todos deben sangrarse con espacios iguales. 24. Siempre ponga llaves en las estructuras if/else (y en cualquier estructura de control) para ayudarle a evitar su omisin accidental, especialmente si despus le agrega instrucciones a una clusula if o else. 25. Algunos programadores prefieren colocar primero las llaves izquierda y derecha y despus introducir las instrucciones que van dentro de ellas. Con esto se evita la omisin de alguna de dichas llaves. 26. Inicialice los contadores y totales. 27. Declare cada variable en una lnea diferente. 28. Al efectuar divisiones entre una expresin cuyo valor podra ser cero, busque explcitamente esta condicin y manjela de manera adecuada (imprimiendo un mensaje de error) en lugar de permitir que suceda el error fatal. 29. Mediante un mensaje pdale al usuario todas las entradas de teclado. Dicho mensaje debe especificar la forma de la entrada y los valores especiales que pueda tener (como el valor centinela que debe indicar el usuario para terminar algn ciclo) 30. En los ciclos controlados por un valor centinela, las solicitudes de entrada de informacin deben recordarle explcitamente al usuario dicho valor centinela. 31. No compare la igualdad o desigualdad de los valores de punto flotante. En cambio, pruebe que el valor absoluto de la diferencia sea menor que un valor pequeo especificado. 32. La iniciacin de variables cuando se declaran ayuda al programador a evitar los problemas provocados por datos no inicializados. 33. Los operadores unarios deben ponerse junto a sus operandos, sin espacios intermedios. 34. Controle los ciclos con contadores por medio de variables enteras. 35. Sangre las instrucciones del cuerpo de cada estructura de control 36. Ponga una lnea en blanco antes y despus de cada estructura de control, con el fin de resaltarlas en el programa. 37. Si hay demasiados niveles de anidamiento puede volverse difcil entender el programa. Como regla general, trate de evitar codificar ms de tres niveles de sangrado. 38. El espaciado vertical de las estructuras de control, as como el sangrado de los cuerpos de las estructuras de control dentro de sus encabezados, le da al programa una apariencia bidimensional que simplifica en gran medida su lectura. 39. Para ayudarle a evitar los errores por diferencia de uno, utilice el valor final en la condicin de una estructura while o for y el operador relacional <=. Por ejemplo, para un ciclo que imprime los valores 1 a 10, la condicin de continuacin del ciclo debera ser contador <= 10, en lugar de contador < 10 (lo que es un error por diferencia de uno) o contador < 11 (que, sin embargo, es correcta) No obstante, muchos programadores prefieren el llamado conteo basado en cero, en el que para contar 10 veces, habra que inicializar contador a cero y la prueba de continuacin del ciclo sera contador < 10. 40. En las secciones de iniciacin e incremento de las estructuras for slo ponga expresiones relacionadas con las variables de control. Las manipulaciones de otras variables deben aparecer antes del ciclo (si slo se ejecutan una vez, como las instrucciones de inicializacin) o en el cuerpo del ciclo (si se ejecutan una vez por repeticin, como en el caso de las instrucciones de incremento o decremento) 41. Aunque el valor de la variable de control puede cambiarse en el cuerpo del ciclo for, evite hacerlo, pues esta prctica puede generar sutiles errores de lgica. 42. Aunque las instrucciones que preceden a un ciclo for y las del cuerpo de ste con frecuencia pueden insertarse en el encabezado del for, evite hacerlo, pues podra hacer ms difcil la lectura del programa. 43. De ser posible, limite a una sola lnea el tamao de los encabezados de las estructuras de control. 44. No emplee variables de tipo float o double para efectuar clculos monetarios. La imprecisin de los nmeros de punto flotante puede provocar errores que generarn valores monetarios incorrectos. a. Nota: estn apareciendo bibliotecas de clases de C para manejar adecuadamente los clculos monetarios. 45. Agregue un caso default en las instrucciones switch. Los casos no probados explcitamente en una instruccin switch que no tenga un caso default son ignorados. Al incluir el caso default se enfoca al programador en la necesidad de procesar condiciones excepcionales. Hay situaciones en las que no es necesario el procesamiento default. 46. Aunque las clusulas case y el caso default de la estructura switch pueden suceder en cualquier orden, se considera una buena prctica de programacin poner la clusula default al ltimo. 47. En las estructuras switch, cuando la clusula default se lista al ltimo, no es necesaria la instruccin break. Algunos programadores incluyen este break por claridad y simetra con los dems case. 48. Algunos programadores siempre incluyen llaves en las estructuras do/while, incluso cuando no son necesarias. Esto ayuda a eliminar las ambigedades entre la estructura while y la estructura do/while que contiene una sola instruccin. 49. Algunos programadores sienten que break y continue violan la programacin estructurada. Y no las utilizan debido a que los efectos de estas instrucciones pueden lograrse por medio de tcnicas de programacin estructurada. 50. Abra un archivo un archivo para entrada (utilizando ios::in) solamente si el contenido del archivo no debe ser modificado. Esto impide una modificacin no intencional del contenido del archivo. Este es un ejemplo del principio de menor privilegio.