Mie
28
May

Costumbres del código: Uso de las llaves en programación { } - Parte 2


El post anterior sobre costumbres del código tuvo bastante participación por parte de los lectores, que se animaron a compartir sus opiniones en los comentarios. Así que como se fue largo el tema escribo a modo de continuación.

Gracias a un post de Algoritmática, Código más bonito, del que nos comentaba Eduardo, aprendí un poco más respecto a la indentación. Como dice en su blog, existen varios estilos reconocidos mundialmente de indentación. Entre ellos, la forma a la que me refería que me gustaba escribir el código lleva el nombre de Estilo K&R y BSD KNF:

El estilo K&R es el más usado en el lenguaje C y PHP. Se trata de abrir la llave en la misma línea de declaración de la orden, indentando los siguientes pasos al mismo nivel que la llave y cerrando la llave en el mismo nivel que la declaración. Normalmente las tabulaciones en windows son de 4 espacios, cuando las tabulaciones tienen 8 espacios se trata del estilo BSD o KNF, muy usado en Linux.

Y muestra como ejemplo:

function saludar($val){
if($val == 1) {
echo "Hola!";
} else {
echo "Chau!";
}
}

También están el Estilo Allman (el que aparentemente utiliza la mayoría) y el Estilo GNU (parecido pero con diferencias en la indentación de espacios). Visiten el post en algoritmática para leer más sobre indentación, y conocer algunas herramientas.

Respecto a si el estilo K&R queda más aglutinado o fácil de leer, es cuestión de costumbre. No pienso que por no dejar una línea con una llave nada más el código sea menos legible, al contrario. Es más, cuando veo código así, lo corrijo, para leerlo mejor por mi parte. Pero tenemos casos por ejemplo el de Diego que comenta que usa un estilo específico no por comodidad, sino por un estándar en su trabajo.

Por cierto, este tema es hablando de ahorrar líneas en el sentido de organización y facilidad para la lectura del código, no de espacio. Obviamente hoy en día un salto de línea más o menos no afecta en los recursos o el espacio de forma .

También a veces hago como comenta Menda, que usa una sola línea para los if simples:

Si es algo bastante sencillo, no es necesario seguir toda la estructura ni siquiera usar las llaves para que quede legible.

Sí estoy a favor de dejar un salto de línea entre bloques importantes, por ejemplo entre dos funciones deberíamos dejar por lo menos un salto de línea vacío para identificar donde termina una y comienza la otra. Y la idea de agregar un comentario con la definición del comienzo de una función en el cierre de bloques también resulta práctica.

Hoy en el trabajo modifiqué las opciones del VS para que no agregue el salto de línea innecesario que les hablaba.

Blaxter, Marto, Omar, DonPiluso, Lino, FaCuZ, Pablo, Edder, kbza, Diego, Marto, Leandro, dm, Menda y eduardomatica , muchas gracias por sus aportes y un saludo para todos! Fue muy interesante este intercambio.


Si te gustó éste post, podés apoyar a PicandoCódigo a través de PayPal!



15 Comentarios para “Costumbres del código: Uso de las llaves en programación { } - Parte 2”

  1. pablo



    Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1C28 Safari/419.3

    Si usaras python no perderias el tiempo planteandote este dilema.

  2. Federico Wagner



    Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5

    Cuando programaba en C me acostumbre al estilo de K&R, pero ahora prefiero el estilo de Python

    def saludar(val):
    if val == 1:
    print “Hola!”
    else:
    print “Chau!”

  3. Federico Wagner



    Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5

    Va de nuevo el código, sorry


    def saludar(val):
    if val == 1:
    print "Hola!"
    else:
    print "Chau!"

  4. Menda



    Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; es-ES; rv:1.9) Gecko/2008051202 Firefox/3.0

    ¡Fue un placer Fernando!
    Leo mucho tu blog y me parece fenomenal. ¡Sigue así!

  5. Eduardo



    Opera/9.27 (Windows NT 5.1; U; es-es)

    Un gusto Fernando el que te haya gustado el artículo :D .

    Yo también suelo cambiar el estilo si el código es de otro, y está en K&R lo cambio por Allman agregandole las lineas xD

    Es una manía jejeje, por lo que por ejemplo, vos y yo no podríamos trabajar bien en equipo :D yo cambiando tu codigo y vos el mio xD (claro habría que hacer lo que hacen en el laburo de Diego, pero ¿cuál elegiriamos y con qué argumentos?)

    No creo que sea solo cuestión de gustos, algún transfondo teórico/psicológico debe haber en todo esto :)

    Salu2 amigo.

  6. Carlos Antelo



    Mozilla/5.0 (compatible; Konqueror/3.5; Linux; X11; es) KHTML/3.5.9 (like Gecko) (Debian)

    y… mientras no programes en Perl, podes usar indent u otro programa ( solo perl puede parsear Perl ) para mi lo mejor es plantearse unas reglas generales de estilo para todo el equipo cuando arrancan y seguirlas, no creo que haya un método universal para sangrar que sea perfecto, cada lenguaje, cada proyecto, cada persona, tiene sus costumbres, gustos y necesidades, cada programa va a tener su propio sabor.

  7. fernando



    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080409 IceCat/2.0.0.13-g1

    pablo:
    No es un dilema, simplemente planteamos una discusión amena y estudiamos el tema para conocer otras perspectivas.

    Todavía no le he entrado a Python, aunque pienso estudiarlo más a fondo ni bien pueda. De todas formas, C y su sintaxis siempre están presentes, por lo que difícilmente nos deshagamos de las llaves {}

    Eduardo: Estaría bueno hacer un análisis psicológico detrás de cada programador y porqué usa cada estilo. Aunque creo que encontraríamos cosas que podrían herir la sensibilidad de los demás mortales… mejor no!

    Cuando se trabaja en equipo siempre se preestablece un estándar para que todos hagan lo mismo. De todas formas, uno siempre le corrige esas manías al otro :P (me pasó).

    Carlos: Así es,”cada maestro con su librito” dicen.
    ¿Porqué querría programar en perl? :D
    Perl: -1

  8. Federico Wagner



    Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5

    En cuanto puedas entrale a python, vale la pena.

    En cuanto a mi comentario anterior, la gracia estaba en que se viera la identación de python, como no es posible mostrarlo en los comentarios públique un post que me permite mostrar la pieza de código correctamente (y con resaltado de sintaxys), lo pueden ver en http://www.proximamente.org/blog/?p=28

  9. Diego Gadola



    Mozilla/5.0 (Windows; U; Windows NT 6.0; es-AR; rv:1.9) Gecko/2008051206 Firefox/3.0

    Hay casos en los que no esta bueno lo que decis de hacer if simples en una linea, un ejemplo es cuando queres contar las lineas logicas de tu programa, esto se utiliza para poder tener una idea(por silmilitud del programa, etc) para estimar tiempo al crear proximos programas y funciona ya que se puede correlacionar las lineas logicas de un programa con el tiempo que te lleva en desarrollarlo. En ese caso hay que elegir un estandar de codificacion, que te permita contar lineas logicas de manera facil, o sea una linea logica por linea fisica de codigo.

    Aca dejo un link donde puden ver algo mas explicado del tema, por si no se entiende lo que puse… :(

    Este es mi primer comentario en el blog!, epero que aporte algo…

    saludos

  10. fernando



    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080409 IceCat/2.0.0.13-g1

    Federico, ya ví tu post, gracias! Voy a probar de instalar algún otro plugin para la sintaxis, porque el hecho de no respetarte las indentaciones no existe!

    Diego: Gracias por tu primer comentario, bienvenido! Muy valioso tu aporte, un punto de vista que no se había considerado en la discusión.

    Saludos!

  11. yny



    Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; WinuE v6; WinuE v6)

    nadamas les pido ayuda necesito un programa que cuente las lieas logicas y fisicas del mismo programa porfavor ayuda¡¡¡¡¡¡¡¡ en java

  12. fernando



    Mozilla/5.0 (X11; U; Linux i686; es-AR; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1

    yny:
    Puedes pedir ayuda en el foro de programacion.

Trackbacks

  1. Costumbres del código: Uso de las llaves en programación { } | Picando Código
  2. UnLugar » Blog Archive » Programando con estilo
  3. Costumbres del código: [Lenguaje del teclado] | Picando Código

Dejar un comentario

Si quieres mostrar código, enciérralo entre los tags pre de esta forma:
<pre lang="L"> y </pre>, donde L es un lenguaje compatible GeSHI. Más info.

XHTML: Las siguientes tags están permitidas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">


Al agregar un comentario en esta página, usted acepta la siguiente licencia para su publicación:
Creative Commons License Creative Commons Attribution-Share Alike 3.0 Unported License.