Академический Документы
Профессиональный Документы
Культура Документы
Licencia de Uso
Copyright
(C)
<2009>
<JuanVizcarrondo
(jvizcarrondo@cenditel.gob.ve) - Plataforma para el Desarrollo de
Software
Libre
(http://plataforma.cenditel.gob.ve/)>
de
la
Fundacin CENDITEL.
La Fundacin CENDITEL concede permiso para copiar, distribuir
y/o modificar este programa bajo los trminos de la licencia de
software GPL versin 2.0 de la Free Software Foundation.
Este programa se distribuye con la esperanza de que sea til,
pero SI NINGUNA GARANTA; tampoco las implcitas garantas de
MERCANTILIDAD o ADECUACIN A UN PROPSITO PARTICULAR. Consulte la
licencia
GPL
para
ms
detalles.
Una copia de la licencia en ingls y en espaol puede obtenerse en
los siguientes sitios en Internet:
En
2.0.html
ingls:
http://www.gnu.org/licenses/old-licenses/gpl-
En
http://www.es.gnu.org/modules/content/index.php?id=8
espaol:
Historial de Revisiones
Fecha
Versin
Descripcin
Responsable(s)
Abril de
2008
0,01
Desarrollo
documento.
Julio de
2009
0,1
Adaptacin
de Juan Vizcarrondo
estilos
para
publicacin.
ESTILOS DE PROGRAMACIN
Licencia de Uso.................................................................................2
Historial de Revisiones.........................................................................3
Estilos de Programacin.........................................................................6
Indentacin....................................................................................10
Estilo K&R.....................................................................................14
Estilo Allman..................................................................................14
Estilo BSD KNF.................................................................................15
Estilo Whitesmiths.............................................................................16
Estilo GNU.....................................................................................17
Convencin de nombres en identificadores.......................................................17
Identificadores con Multiples Palabras.........................................................19
Notacin Camel [10]............................................................................20
Notacin C [11]................................................................................21
Notacin Hngara [12]..........................................................................21
Otras consideraciones..........................................................................22
Uso de Espacios............................................................................................................ ........................22
Comentar el cdigo [5]....................................................................................................... ..................22
Operadores [14]....................................................................................................................... .............23
Lista de Parmetros en Funciones [14]................................................................................ ................24
Desvo en Llamadas a Funciones [14].................................................................................................. .25
Estilos de Programacin
Los lenguajes de programacin tienen la particularidad de
cumplir un doble rol. Por un lado sirven para comunicar humanos
con computadoras. Son la forma de transformar una serie de
abstracciones como algoritmos, mdulos, tipos de datos y sistemas
en algo que una computadora pueda ejecutar. El segundo rol, y que
no se ve tanto a primera vista, es que un lenguaje de programacin
sirve para comunicar humanos con humanos. Por ejemplo, para que
alguien le cuente un algoritmo a otro. O en muchos casos para que
un programador pueda maana recuperar las ideas que volc en
cdigo hoy.
Dado lo anterior, debera ser clara la motivacin para poner
atencin en el estilo de programacin. Los aspectos que
normalmente se denominan "estilo" son aspectos relacionados a los
lenguajes como medio de comunicacin entre personas, y que
usualmente no influyen en la comunicacin humano-mquina.
Las reglas de estilo son flexibles. Esto no significa que uno
va escribiendo y cambiando de estilo. Es muy importante dentro de
un mismo proyecto mantener siempre las mismas reglas rgidas,
aunque estas sean distintas a las que uno usa en otros proyectos.
Incluso, cuando se trabaja sobre un proyecto escrito por otro, es
mejor adaptarse al estilo en que est escrito en vez de
mezclarlos.
No basta con escribir un programa que funcione. El cdigo
tiene que estar bien escrito. El problema del estilo es muy
recurrente en el desarrollo de software. Muchas veces se escribe
el cdigo pensando que la nica persona que lo modificar es el
mismo programador. Y cuando llega alguien ms, y comienza a
revisar el cdigo, comienzan los problemas. Peor an es cuando se
mezclan estilos de programacin. Que si uno usa notacin hngara,
que si otro emplea camelCase, que si otro prefija las variables
con el alcance de la variable, que si para las variables miembro
se les prefija con una m_, o simplemente con el guin bajo, o no
se les prefija. El no tener estilos claros podrian generar en
estructuras como:
2009 Ao de la Soberana Cientfica, Tecnolgica e Industrial
Avenida Alberto Carnevali, La Hechicera, Edificio CENDITEL. Telfono: (58)(274) 8084938 6574336 6574958.
Fax: 2451044 Apartado Postal: 078.
Cdigo Postal: 5101. Pgina Web: http://www.cenditel.gob.ve. Mrida-Venezuela
#define _ -F<00||--F-OO--;
int F=00,OO=00;main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
{
_-_-_-_
_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_
_-_-_-_
}
Reparabilidad: la
demasiado esfuerzo.
Capacidad de evolucin:
nuevas necesidades.
la
capacidad
de
adaptarse
Indentacin
En el caso de los lenguajes de computadoras, la claridad
tambin depende de a quien se dirija el lenguaje. Por ejemplo,
para lo computadora son equivalentes las funciones:
float f(float a, float b) {return a*b ;}
typedef float longitud ;
typedef float area ;
area area_rectangulo (longitud base, longitud altura) {
/* Devuelve el rea de un rectngulo de base `b' y altura `h' */
return base*altura ;
}
b = 2 ;
ABCL/c+
Alef o Limbo
AutoHotkey
AWK
BCPL
C shell (csh)
C++
C#
Cilk multihilos
concurrente
Coyote
Cyclone
DINO
ECMAScript
ActionScript
DMDScript
E4X
JavaScript
JScript
MDMscript
Ferite
Frink
ICI
Java
Groovy
para
programacin
paralela
de
Join Java
X10
Objective-C
Perl
PHP
Pico
Pike
rc
TSL
UnrealScript
Windows PowerShell
Yorick
QuakeC
Los estilo
continuacin:
de
indentacin
ms
importantes
se
muestran
No
hay
un
"estilo
correcto",
sino
que
hay
muchos.
Definitivamente hay distintos criterios sobre cul de ellos es el
mejor, y discusiones bizantinas al respecto. De todos modos, si
hay un acuerdo bastante generalizado sobre varias cosas que se
consideran "mal estilo".
Estilo K&R
El estilo K&R es el ms usado en el lenguaje C y PHP. El
estilo K&R, fue llamado de esta forma porque fue usado por
Kernighan y Ritchies en su libro The C Programming Language [4].
Se trata de abrir la llave en la misma lnea de declaracin de la
orden, indentando los siguientes pasos al mismo nivel que la llave
y cerrando la llave en el mismo nivel que la declaracin.
Ejemplo:
function saludar($val) {
if($val == 1) {
echo "HOLA";
}
else {
echo "CHAO";
}
}
{
if($val == 1)
{
echo "HOLA";
}
else
{
echo "CHAO";
}
}
if($val == 1) {
echo "HOLA";
}
else {
echo "CHAO";
}
}
Estilo Whitesmiths
El estilo Whitesmiths tambien llamado estilo Wishart. Este
estilo coloca las llaves asociadas con la instrucciones de control
indentada en la
siguiente linea. Este estilo pone la llave que
sigue a la declaracin de un bloque se realiza indentada en la
lnea siguiente. Instrucciones dentro del bloque son indentados en
el mismo nivel que la llave.
function saludar($val)
{
if($val == 1)
{
echo "HOLA";
}
else
{
echo "CHAO";
}
}
de
los
Beneficios: [6]
Para
proporcionar informacin adicional
metadatos) sobre el uso de un identificador.
(es
decir,
Para aumentar
ambigedad.
la
claridad
en
los
casos
de
posible
dromedaryCase:
la
primera
Notacin C [11]
Durante los aos 1960s, con la estandarizacin del cdigo
ASCII, los primeros programadores de C y UNIX utilizaron el
carcter _ como separador: dos_palabras. Esta notacin sigue
siendo la mas utilizada en C y entornos UNIX. Los defensores de
esta notacin argumentan que es mas fcil de leer porque deja un
espacio entre palabras, al contrario que Camel. Adems, en algunos
teclados es mas rpido de escribir el carcter _ que una
mayscula.
Notacin Hngara [12]
La notain Hngara se basa en Camel, aadiendo al principio
del identificador una secuencia de letras en minscula, que indica
alguna caracterstica del identificador, como su tipo en el caso
de variables. Dentro de la notacion Hungara, existen dos tipos; la
de sistemas y la de aplicaciones. La primera, hace referencia a la
tipo de variables utilizadas en el desarrollo de sistemas, tales
como los tipos de datos: unsigned 32-bit interger, double words.
Mientras que la notacion Hunagara para aplicaciones, utiliza
prefijos descriptivos, que indican al igual que en la de sistema
el tipo de dato, pero estas ultimas, son utilizadas para
aplicaciones que se podrian denominar independientes del
sistema.
Por ejemplo:
rgStudiantes
Arreglo.
Estudiantes
es
una
variable
del
tipo
Otras consideraciones
Uso de Espacios
Haciendo un buen uso de espacios entre el codigo de programas
es posible facilitar la comprensin de este.
Compare las siguientes estructuras sintactica en el lenguaje
C.
int i;
for(i=0;i<10;++i){
printf("%d",i*i+i);
}
contra
int i;
for (i = 0; i < 10; ++i) {
printf("%d", i*i + i);
}
Operadores [14].
Usar espacios entre operadores binarios: Todos los operadores
que tomen dos parmetros deben tener un espacio antes y otro
despus del operador (Ejemplo: a + b).
No colocar espacios despus de un operador unario: No debe
haber espacio que separe un operador unario del objeto
afectado.(Ejemplo: !a)
Evitar el uso del operador de comparacin condicional: Se
recomienda evitar el uso del comparador condicional ternario "?".
Todo esto se explica en el siguiente ejemplo:
if (abc > xyz) {
zUno = abc;
}
else {
2009 Ao de la Soberana Cientfica, Tecnolgica e Industrial
Avenida Alberto Carnevali, La Hechicera, Edificio CENDITEL. Telfono: (58)(274) 8084938 6574336 6574958.
Fax: 2451044 Apartado Postal: 078.
Cdigo Postal: 5101. Pgina Web: http://www.cenditel.gob.ve. Mrida-Venezuela
zUno = xyz;
}
enlugarde
while (cadena[i++] != NULL) {
haceAlgo();
}
Lo correcto es
a = 2;
b = 3;
Comparacin de constantes
Colocar en las estructuras de control las constantes del lado
derecho:
if ( true == $a ) { ... }
if ( $a == true ) { ... }
Listas
Los diferentes elementos de una lista deberian ser colocados
uno por uno separados por un salto de linea, es una buena practica
aadir el separador de elementos despues del final de cada
elemento.
$arreglo[] = {
"item1",
"item2",
"item3",
};
Referencias Bibliograficas
[1] Cmo y porqu programar con buen estilo, Daniel F. Moisset Url:
http://educa.di.unc.edu.ar/mod/resource/view.php?id=2904
[2]
Indentacin,
Wikipedia,
la
enciclopedia
libre,
Url:
http://es.wikipedia.org/wiki/Indentaci%C3%B3n
free
[4]
Url:
The
Programming
Language,
Kernighan
Ritchies,
http://en.wikipedia.org/wiki/The_C_Programming_Language_%28book%29
(programming),
Wikipedia,
the
free
http://en.wikipedia.org/wiki/Naming_conventions_%28programming%29
Identificador,
Wikipedia,
la
enciclopedia
libre,
Url:
enciclopedia
libre,
Url:
http://es.wikipedia.org/wiki/Identificador
[9]
Palabra
clave,
Wikipedia,
http://es.wikipedia.org/wiki/Palabra_clave
[10]
CamelCase,
Wikipedia,
la
the
free
encyclopedia,
Url:
http://en.wikipedia.org/wiki/CamelCase
[11]
Notacin y
estilo
en
programacin,
http://wiki.siriux.org/article:programming_style
wiki.siriux.org, Url:
[13]
http://es.wikipedia.org/wiki/Extensi%C3%B3n_de_archivo
[15]
Obfuscated
code,
Wikipedia,
the
http://en.wikipedia.org/wiki/Obfuscated_code
free
encyclopedia,
Url: