Anda di halaman 1dari 9

Buenas Prcticas de Programacin en Lenguaje C

Estas normas pueden no ser estrictamente necesarias para que un programa funcione, pero son recomendables para tener menos errores y para que, si los hay, sea ms fcil encontrarlos. Los profesores tendrn en cuenta en la correccin que usted emplee un buen estilo de programacin. La presente lista no est necesariamente completa, pero si contiene una cantidad significativa de buenas prcticas de programacin que deben seguir los estudiantes del curso.

1. Cada programa debe comenzar con un comentario que describa su propsito.

2. Hacer un diseo previo al programa (pseudo cdigo, diagramas, ...). Se aconseja revisarle antes de empezar a programar. Se empieza por la descomposicin del problema en funciones, para pasar luego al detalle de cada una. El pseudo 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 el C.

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. Declar las variables con nombres significativos ( o mnemotcnicos) esto 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.

5. 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.

6. Capture los resultados de todas las llamadas al sistema que su programe realice y dle el tratamiento adecuado que corresponda en cada caso.

7. Idente la instruccin del cuerpo de una estructura if para que resalte la estructura y simplificar la lectura del programa.

8. Su programa no debe tener instrucciones no alcanzables, es decir, que nunca se ejecuten, ni realizar varias veces la misma operacin sobre los mismos datos.

9. 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.

10. La iniciacin de variables cuando se declaran ayuda al programador a evitar los problemas provocados por datos no inicializados.

11. En los programas no debe haber ms que una instruccin por lnea.

12. Sangre las instrucciones de ambos cuerpos de las estructuras if/else.

13. Si hay varios niveles de sangrado, todos deben sangrarse con espacios iguales.

14. 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.

15. Inicialice los contadores y totales.

16. Declare cada variable en una lnea diferente.

17. 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.

18. 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)

19. En los ciclos controlados por un valor centinela, las solicitudes de entrada de informacin deben recordarle explcitamente al usuario dicho valor centinela.

20. 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.

21. Controle los ciclos con contadores por medio de variables enteras.

22. 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.

23. 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)

24. 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.

25. Evite reinventar la rueda. Cuando sea posible, utilice las funciones de la biblioteca estndar de C en lugar de escribir nuevas. Con esto se reduce el tiempo de desarrollo de los programas. A menos que al hacerlo, no cumpla con los objetivos del proyecto en cuanto al aprendizaje de las herramientas descritas en las clases.

26. Cada funcin debe limitarse a efectuar una sola tarea bien definida, y el nombre de dicha funcin debe expresar claramente la tarea. Esto promueve la reutilizacin del software.

27. Si no puede seleccionar un nombre conciso que exprese lo que hace la funcin es posible que sta haga demasiadas tareas. Generalmente es mejor dividir dicha funcin en varias partes ms pequeas.

28. 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.

29. 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.

30. La declaracin de una variable como global en lugar de local permite que sucedan efectos secundarios cuando una funcin que no necesita tener acceso a ella, la modifica accidentalmente o por malicia. En general, las variables globales deben evitarse, excepto en ciertas situaciones en las que hay requerimientos de desempeo especiales.

31. Las variables que slo se utilizan en una funcin particular deben declararse como variables locales de dicha funcin, en lugar de cmo variables globales.

32. Los programas deben escribirse como conjuntos de funciones pequeas. Esto hace ms fcil escribir, depurar, mantener y modificar los programas.

33. Las funciones que requieran de un gran nmero de parmetros podran estar efectuando demasiadas tareas. Considere dividir la funcin en funciones ms pequeas que realicen las distintas tareas. El encabezado de la funcin debe caber en una lnea, de ser posible.

34. Cualquier problema que pueda resolverse por recursividad tambin puede resolverse por iteracin (de manera no recursiva) Normalmente se prefiere un enfoque recursivo sobre un enfoque iterativo cuando el primero refleja de manera ms natural el problema y su resultado es un programa ms fcil de entender y

depurar. Otra razn para seleccionar la solucin recursiva es que tal vez no se encuentre una solucin iterativa aparente.

35. Todo valor constante que se use ms de una vez deber estar declarado al principio del programa con #define.

36. Los nombres usados para constantes, variables, tipos y funciones deben seguir las siguientes reglas: Sern verbos para las funciones y nombres para tipos, variables y constantes.

Se podr abreviar una palabra en vez de ponerla completa, pero debe quedar claro del significado.

Los nombres de constantes ir en mayscula.

Los nombres de tipos tendrn la inicial mayscula y el resto ir minsculas.

en

Los nombres de variables y funciones ir en minsculas.

Las variables cuyo sentido no quede suficientemente aclarado con su nombre, deber tener un comentario explicativo junto a su declaracin.

Las funciones deben llevar un comentario indicando sus objetivos, as como a que resultados pretenden llegar en funcin de los datos de entrada.

Toda entrada de datos (individual o ciclo de ellas) con scanf ir precedida de un mensaje de peticin con printf.

37. 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.

38. Dentro de los corchetes que definen el cuerpo de una funcin, idente el cuerpo de la funcin un nivel. Esto resalta la estructura funcional de los programas y ayuda a simplificar su lectura. 39. Slo indique letras maysculas para los nombres de constantes de enumeracin. Con esto se resaltan las constantes en el programa, recordndole al programador que las constantes de enumeracin no son variables.

40. Algunos programadores siempre incluyen llaves en las estructuras do/while, incluso cuando no son necesarias. Esto ayuda a eliminar las ambig edades entre la estructura while y la estructura do/while que contiene una sola instruccin.

41. Algunos programadores prefieren declarar las variables en lneas separadas. Este formato permite la fcil insercin de comentarios descriptivos junto a cada declaracin.

42. Para hacer ms legibles sus programas, ponga espacios despus de las comas (, )

43. La consistencia en la aplicacin razonable de convenciones de sangrado a sus programas simplificar notablemente su lectura. Sugerimos una tabulacin fija de 1 4 de pulgada o tres espacios en blanco por cada sangra.

44. Cada funcin debera caber en una ventana del editor. Sin importar su tamao, lo importante es que efecte bien una tarea. Las funciones pequeas promueven la reutilizacin del software.

45. 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 1 4 de pulgada o (de preferencia) de tres espacios por cada nivel de sangra.

46. 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.

47. 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.

48. Si hay demasiados niveles de anidamiento puede volverse difcil entender el programa. Como regla general, trate de evitar codificar ms de 5 niveles de sangrado.

49. Donde va una condicin (if, while, for, ...) no se pondr

un nmero.

50. Ponga espacios en ambos lados de los operadores binarios. Con esto se resalta el operador y se simplifica la lectura del programa.

51. 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.

52. Los operadores unarios deben ponerse junto a sus operandos, sin espacios intermedios.

Enlaces a Otros Documentos que contienen Buenas Prcticas de Programacin en C y que fueron usado como base para la elaboracin de este documento.

http://pis.unicauca.edu.co/moodle/mod/resource/view.php?inpopup=true&id=3623

http://www.google.co.ve/url?sa=t&source=web&ct=res&cd=6&url=http%3A%2F%2Fpers onales.unican.es%2Fzorrillm%2FPDFs%2FDocencia%2FProgramacionComputadoras%2Fes tilo.pdf&ei=O77ASojGJJfk8Ab2tmyAQ&rct=j&q=buenas+practicas+de+programacion+en+c&usg=AFQjCNH9W7LPMNx8RT CwELXIfTynrSdDmQ

http://www.google.co.ve/url?sa=t&source=web&ct=res&cd=1&url=http%3A%2F%2Fazul2 .bnct.ipn.mx%2Fc%2Ffunciones%2Farchivos%2520%2528.pdf%2529%2Fcomplemento%25 20lecciones%252010-17.pdf&ei=O77ASojGJJfk8Ab2tmyAQ&rct=j&q=buenas+practicas+de+programacion+en+c&usg=AFQjCNF2kVSUyyGIxW9 DL0TT53vKNKYbFQ

Anda mungkin juga menyukai