You are on page 1of 16

Estilos de programacin

Cada programador tiene su propio estilo para escribir. Un buen estilo para
programar deber tener una estructura de cdigo fcil de entender, no solo para
otra gente sino tambin para si mismo. Aqu hay varios criterios para un buen
estilo:
1. Nombres significativos para variables, controles, y procedimientos.
2. Identacin (sangras) y espacios apropiados en el cdigo.
3. documentar el cdigo (poner comentarios para aclarar).
4. Mdulos adaptables.
5. Minimizar el acoplamiento.
6. Minimizar alcance de los datos hasta donde sea posible.

Identacin y espacio apropiado en el cdigo.
La identacin es usada para tener una mejor visibilidad en el diseo de un
programa. La identacin muestra las lneas que estn subordinadas a otras lneas.
Por ejemplo, todas las lneas que forman el cuerpo de un ciclo debern estar
identadas con la instruccin principal del ciclo. En el siguiente ejemplo se muestra
una estructura anidada (una dentro de otra). Cualquier cosa dentro de este primer
ciclo FOR (num_semana) es identada y de la misma manera cualquier cosa dentro
del segundo ciclo (num_dia) es identado tambin. Otra vez cada comando CASE
es identado entre el contenido Select Case y End Select.
For num_semana = 1 To 52
Print "Semana #"; num_semana
For num_dia = 1 To 7
Select Case num_dia
Case 1
Print "Domingo"
Case 2
Print "Lunes"
Case 3
Print "Martes"
Case 4
Print "Mircoles"
Case 5
Print "Jueves"
Case 6
Print "Viernes"
Case 7
Print "Sbado"

End Select
Next num_dia
Next num_semana
Las lneas en blanco pueden tambin ser identadas entre las lneas de cdigo
para romper un procedimiento y hacerlo en pequeos bloques de cdigo.

Documentando el Cdigo
Las complicadas e inusuales secciones de cdigo debern ser documentadas.
Idealmente cada variable y arreglo deber tener comentarios donde se definan tal
que su funcin pueda ser entendida despus. Hay dos formas de documentar
cdigo en VB, la declaracin REM que puede ser usado en lneas separadas y
el (apostrofe) seguido por el texto de comentario. El le dice a VB que ignore
todas la palabras que estn enseguida hasta el fin de la lnea.
Ejemplo:
Dim obejas As Integer Almacena el nmero de obejas de cara negra
Ejemplo:
Rem Centra la forma.

frmCurrent.Left = (Screen.Width / 2) - (frmCurrent.Width / 2)
frmCurrent.Top = (Screen.Height / 2) - (frmCurrent.Height / 2)

Procedimientos Coherentes
Cada procedimiento deber ser diseado para una tarea simple. Si un
procedimiento maneja muchas tareas, es lgico que pueda ser difcil de entender y
pueda ocurrir fcilmente un error.
Minimizar el acoplamiento
Pasar un parmetro es una buena prctica de programacin, pero muchos
parmetros y el cdigo pueden llegar a ser muy difciles de manejar. Los
procedimientos con muchos parmetros son altamente acoplables, ellos tienen
muchas ligas o otros procedimientos. Hasta donde sea posible se deben minimizar
stas ligas. Sin embargo las variables globales no debern ser usadas en lugar
de ellas!.
Minimizar alcance de los datos hasta donde sea posible.
Las variables y los arreglos pueden se accedidos por cdigo en diferentes partes
de un programa, desde cualquier lugar si son Globales. Esto es lo ideal, pero si no
hay cuidado algunos efectos extraos pueden ocurrir en otras partes del
programa, como colocando un valor en una variable por error. Restringiendo el
rango de acceso, o el alcance de una variable o un arreglo se puede evitar este
problema. Un alcance intermedio es el acceso necesario para una variable durante
todo el simple mdulo. Esto significa que cualquier procedimiento en el mdulo
puede accesar la variable, pero los procedimientos en otros mdulos tienen
acceso denegado.




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 escribi 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, 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.
As, la meta final del programador es construir programas. Y el ideal es construir
"buenos" programas. Hay diversas cualidades generalmente aceptadas de lo que
es un programa "bueno", y cualquier herramienta, tcnica o mtodo que nos ayude
a mejorar esas cualidades es bienvenida. Las cualidades que se ven beneficiadas
de forma ms directa por un buen estilo son |1|:
Extensibilidad: La facilidad con que se adapta el software a cambios de
especificacin. Un buen estilo de cdigo fomenta programas que no slo
resuelven el problema, sino que tambin reflejan claramente la relacin
problema/solucin. Esto tiene como efecto que muchos cambios simples en
el problema reflejen de forma obvia los cambios a hacer en el programa.

Verificabilidad: la facilidad con que pueden comprobarse propiedades de un
sistema. Si el estilo de cdigo hace obvia la estructura del programa, eso
ayuda a verificar que el comportamiento sea el esperado.

Reparabilidad: la posibilidad de corregir errores sin demasiado esfuerzo.

Capacidad de evolucin: la capacidad de adaptarse a nuevas necesidades.

Comprensibilidad: la facilidad con que el programa puede ser comprendido.

Algunas consideraciones al momento de programar con estilos |1|:
El estilo del cdigo no es un resultado final, sino algo para preservar a lo
largo de toda su escritura. Es cierto que las primeras veces escribir con
estilo requiere un esfuerzo consciente, una vez que uno se acostumbra al
estilo, seguirlo deja de ser un esfuerzo adicional. Usualmente es ms
trabajo "arreglar un cdigo despus, que escribirlo bien desde el principio".

El estilo debe ser uniforme en un mismo proyecto. Al leer un cdigo, uno se
acostumbra al estilo usado en una forma que permite entenderlo con un
vistazo general. Si hay cdigo con estilos mezclados, leer algo con un estilo
despus de haberse acostumbrado a leer algo con otro puede ser confuso.
Por ejemplo, si dos tramos de cdigo usan distintas abreviaturas para lo
mismo, o distintas formas de indentar (que pueden hacer que dos
estructuras de control iguales se vean diferentes).

El estilo de cdigo debe promover programas que pueden ser
comprendidos de forma inmediata (suponiendo el conocimiento del
problema que ste resuelve). Los problemas de computacin ya son
complejos y no hay motivo para aumentar su complejidad con cdigo
rebuscado. Los programas deberan ser soluciones, no problemas.

El estilo no debe promover fragmentos de cdigo que le dan demasiada
importancia a detalles irrelevantes. Escribir demasiado, le da relevancia a
aspectos no fundamentales, y ocupa la atencin en aspectos secundarios
del programa. Un buen programa debera enfocar la atencin en lo
importante, y permitir abstraerse de los detalles.

El estilo de indentacin debe permitir ver la estructura del cdigo sin mirar
el cdigo en s (es decir, con solo ver la distribucin de espacio en blanco y
espacio escrito). Cuando se busca un tramo de programa o se lee rpido,
uno puede visualizar la distribucin de espacio blanco/no blanco pero no
tiene tiempo para ver estructuras, o concordancia de
parntesis/llaves/corchetes.

El estilo de indentacin debe poder usarse de la misma forma en distintos
lenguajes y verse similar (para construcciones lingsticas similares).
Muchas veces es necesario cambiar de lenguaje (entre un proyecto o entre
varios), y preservar un estilo uniforme permite no tener que estar fabricando
reglas nuevas cada vez.

El estilo de cdigo debe permitir fcilmente realizar cambios bsicos en el
cdigo: agregar una lnea a un bloque, borrar una lnea de un bloque,
mover lneas en un bloque. Este tipo de cambios es muy usual, y si el estilo
dificulta realizarlos interrumpe en la forma de trabajo.

El nombre de un objeto cualquiera del programa (funcin, variable, tipo),
debe permitir identificar el objeto de forma no ambigua rpidamente dentro
del rea de visibilidad del objeto. Un estilo de esta forma permite leer el
cdigo sin tener que detenerse en cada identificador a recordar (o buscar)
donde estaba definido y que era.

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 ;
}

Pero a una persona le transmite mucha ms informacin y contenido la segunda
funcin. En el sentido inverso, para la mayora de la gente son iguales:

a =1b =2;
a =1;
b =2;

s, la indentacin se utiliza para mejorar la legibilidad del cdigo fuente por parte
de los programadores, teniendo en cuenta que los compiladores o intrpretes
raramente consideran los espacios en blanco entre las sentencias de un
programa. Sin embargo, en ciertos lenguajes de programacin como Haskell,
Occam y Python, la indentacin se utiliza para delimitar la estructura del programa
permitiendo establecer bloques de cdigo. Indentacin es mover un bloque de
texto hacia la derecha insertando espacios o tabuladores para separarlo del texto
adyacente. Un estilo de indentacin es la convencin|2|.
El estilo de indentacin se refiere a una convencin para la forma en que se
coloca la indentacin en un programa, usualmente los basados en la familia curly
bracket |3|:
ABCL/c+

Alef o Limbo

AutoHotkey

AWK

BCPL

C

C shell (csh)

C++

C#

Ch - interprete C/C++ embebido

ChucK - para programacin de audio

Cilk - concurrente C para programacin paralela de multihilos

Coyote

Cyclone

D

DINO

E

ECMAScript

ActionScript


Los estilos de indentacin ms importantes se muestran a continuacin. 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 "ADIOS";
}
}


La ventaja de este estilo es que la llave de apertura no requiere una lnea extra y
llave de finalizacin se alinea a la declaracin conceptual a la que pertenece. Una
desventaja de este estilo es quela llave final de un bloque toma una lnea enter, el
cual podra se parcialmente resuelto en los bloques if/else y do/while

Estilo Allman. El estilo Allman fue definido por Eric Allman. Se trata de crear una
nueva lnea para las llaves, e identar el cdigo debajo de ellas. La llave de cierre
tiene el mismo identado que la de inicio.

function saludar(val)
{
if(val ==1)
{
echo "HOLA";
}
Else
{
echo "ADIOS";
}
}

Ventaja de este estilo es que la indentacin del cdigo claramente diferencia las
instrucciones de un bloque con la declaracin condicional. Una desventaja de este
estilo es que cada llave de finalizacin ocupa una lnea entera sin aadir ningn
cdigo.

Estilo BSD KNF. Tambin conocido como estilo Kernel Normal Form, es la
manera ms usada para el cdigo de la distribucin del software del sistema
operativo de Berkeley. Es un extensin del estilo K&R. Se define un tabulador duro
(8 espacios) el cual es usado para indentar bloques de cdigo, mientras un
tabulador suave (4 espacios) para todas las lneas continuas que exceden el
espacio de visin de la consola.

function saludar(val){
//AQUI EXISTE UNA LINEA QUE EXCEDE EL ESPACIO DE VISION DE LA
CONSOLA, AQUI EXISTE UNA LINEA QUE EXCEDE
If (val ==1) {
echo "HOLA";
}
Else {
echo "ADIOS";
}
}


Estilo Whitesmiths (tambin 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 "ADIOS";
}
}

Las ventajas obtenidas mediante la implementacin de este estilo son las mismas
del estilo Allman en que los bloques son claramente separados desde la
instruccin de control, Sin embargo en el estilo Whitesmiths, el bloque est
conectado visualmente a su declaracin de control. Otra ventaja es que la
alineacin de las llaves con el bloque entero es visto como un solo conjunto de
instrucciones. Adems, las llaves hacen hincapi en que el contenido del bloque
estn subordinados a la declaracin de control. Una desventaja de este estilo
podria ser que las llaves ocupan una linea entera. Otro inconveniente podra ser
que el la llave de cierre no se alinea con la declaracin a la que conceptualmente
pertenecen, aunque otros sostienen que el cierre de llaves pertenece a la llave de
apertura y no a la declaracin de control.

Estilo GNU. El estilo GNU coloca una llave sobre la siguiente linea. Las llaves son
indentadas por 2 espacios, y el cdigo que contiene indentada por 2 espacios
adicionales.

function saludar (val)
{
If (val == 1)
{
echo "HOLA";
}
else
{
echo "ADIOS";
}
}

Convencin de nombres en identificadores
Los identificadores son smbolos lxicos (tambin llamados smbolos) que
nombran entidades del lenguaje, tales como las constantes, los tipos de dato, las
etiquetas, las subrutinas, los paquetes y las subrutinas (procedimientos y
funciones)|8|.Existen algunas restricciones para la seleccion de los identificadores
que dependen del lenguaje a utilizar |8|, por ejemplo:
No se pueden utilizar identificadores que correspondan con palabras claves
o reservadas del lenguaje |9| y restricciones con respecto a qu caracteres
pueden aparecer en un identificador (Ejem. no est permitido el uso de
espacios en blanco, operadores del lenguaje, ni acentos, entre otros). Las
selecciones apropiadas para los identificadores se consideran como la
piedra angular para un buen estilo.
Un nombre pobre para el identificador hace el cdigo difcil de leer y entender.Por
ejemplo, considere el siguiente fragmento de cdigo:

if a < 24 and b < 60 and c < 60
return true
else
return false

Debido a la eleccin de los nombres de las variables, la funcin del cdigo es
difcil de leer y entender. Sin embargo, si los nombres de variables se hacen ms
descriptivos:

if horas < 24 and minutos < 60 and segundos < 60
return true
else
return false

As, dado el contexto (es decir, sabiendo de qu trata la clase), debera ser
intuitivo, por el puro nombre, saber qu hace el mtodo, o para qu se emplea la
variable. Los nombres tienen que ser claros e intuitivos. Los beneficios que
proporciona declarar apropiadamente los identificadores son los siguientes:

Para ayudar a formalizar las expectativas y fomentar la coherencia dentro
de un equipo de desarrollo.
Para permitir el uso de reconstrucciones automatizadas o herramientas de
bsqueda y reemplazo con un mnimo de posibilidad de error.
Para aumentar la claridad en los casos de posible ambigedad.
Para mejorar la esttica y apariencia profesional de los trabajos (por
ejemplo, se desestiman los nombres excesivamente largos, nombres
cmicos o abreviaturas).
Para ayudar a evitar "colisiones de nombres" que podran ocurrir cuando el
resultado del trabajo de las diferentes organizaciones se combina
(namespace |7|).

Identificadores con Mltiples Palabras
Al momento de nombrar identificadores es comn que una sola palabra no sea
suficiente para dar una idea al lector de su significado en el cdigo. Por ello en
muchos casos es necesario nombrar identificadores como la unin de varias
palabras. Para esto, en muchos lenguajes de programacin no es permitido
escribir el nombre del identificador con espacios en blanco. El enfoque ms comn
consiste en definir delimitadores para realizar la unin, tales como el guion (-), y el
subrayado(_): (Ejem. dos-palabras, dos_palabras). En algunos lenguajes de
programacin el guion es reservado para identificar la operacin de resta. Por lo
cual han surgido distintas notaciones para permitir a los programadores la union
de palabrasen la definicin de identificadores |6|:

Notacin Camel |10|. Es la prctica de escribir frases o palabras compuestas en
el que las palabras se unen sin espacios y se capitalizan. La notacin consiste en
escribir los identificadores con la primera letra de cada palabra en maysculas y el
resto en minscula: DosPalabras. Se llama notacin Camel porque los
identificadores recuerdan las jorobas de un camello. Existen dos variantes:
UpperCamelCase, CamelCase o PascalCase: en esta variante la primera
letra tambin es mayscula: DosPalabras?.
lowerCamelCase, camelCase o dromedaryCase: la primera letra es
minscula: dosPalabras.

En el lenguaje Java, se usa la notacin CamelCase en identificadores para clases,
y dromedaryCase para mtodos y variables.

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 notacin Hngara se basa en Camel, aadiendo al
principio del identificador una secuencia de letras en minscula indicando alguna
caracterstica del identificador, como su tipo en el caso de variables. Dentro de la
notacin Hungara,existen dos tipos; la de sistemas y la de aplicaciones. La
primera, hace referencia al tipo de variables utilizadas en el desarrollo de
sistemas, tales como los tipos de datos: unsigned 32-bit integer, double words.
Mientras que la notacin Hungara para aplicaciones, utiliza prefijos descriptivos,
que indican al igual que en la de sistema el tipo de dato.

You might also like