Guias de estilo: ¿tabs o espacios?

Una cosa que se suele hacer bastante en javascript es resetear un formulario, es decir, devolver el formulario a su valor inicial.

Con jquery esto es bastante fácil:


$(

Trackback URL

, , , , , ,

  1. ddg
    09/12/2008 at 3:33 am Permalink

    :set ts=2

    😉

  2. Pietro Zuco
    09/12/2008 at 3:39 am Permalink

    Tienes toda la razón, si se usaran espacios el código se vería siempre igual independientemente de la configuración del editor.

    Pero un punto me parece necesario hacer notar.
    Con tabuladores, aunque tengamos muchas veces el coñazo de tener que ver formateadas las cosas de una forma u otra dependiendo del editor, obtenemos algo que los espacios no proporcionan: Flexibilidad.
    Tener el sangrado tabulado permite que el formato se ajuste a las necesidades de cada uno. Cada quien configura su editor como más le guste y un tab es un tab donde sea por lo que podemos reemplazarlo por 4, 8 o cuantos espacios queramos. En cambio cuatro espacios son cuatro vayan donde vayan y esa fexibilidad desaparece.

    Si por ejemplo, usas cuatro espacios pero otra persona prefiere ver ocho, le quitas la posibilidad de poder formatear el código como más le convenga.

    Un saludo.

  3. Hector
    09/12/2008 at 9:13 am Permalink

    entonces la razón es puramente estetica, yo siempre me habia preguntado si el interprete leeria más rapido con una u otra.

  4. Pau Sanchez
    09/12/2008 at 9:26 am Permalink

    Hola Pietro,
    Creo que tu razonamiento es bastante acertado en prácticamente todo lo que has dicho, sin embargo olvidas un punto muy importante. Me explico.

    Imagina el siguiente ejemplo en C, donde [tab] representa un tabulador:
    void function (void)
    {
    [tab] int i;
    [tab] for (i = 0; i < 10; i++) { [tab][tab] print ("iteration %d\n", i); [tab] } } Si te fijas en ese ejemplo, lo que tu comentas se cumple, es decir, si yo tengo configurado mi editor para que interprete cada tab en 2 caracteres, se me quedará formateado como si hubiese puesto 2 espacios, y si tu lo tienes con 4, entonces tu también lo verás bien. Hasta aquí no hay discusión ninguna, y tu razonamiento es coherente. Sin embargo, mira el siguiente fragmento de código: void function (void) { [tab] int i, var, variable, variable_larga; [tab] i [tab][tab] = 1; [tab] var [tab][tab] = 1; [tab] variable [tab] = 1; [tab] variable_larga [tab] = 1; } No se si ves lo que intento hacer arriba, pero básicamente intento que los "= 1" queden alineados. De hecho, si yo lo he alineado usando tabs de 8 espacios, tu con tabs de 6 espacios puede que lo veas bien, pero si tu editor interpreta los tabs como 4 o 2 espacios ciertamente harían falta más tabs en las variables "i" y "var" para que lo vieras alineado. Y justo el caso contrario, imagina que yo lo alineo usando tabs de 2, entonces cuando otra persona lo abra con sus tabs de 4, vería que el primer = 1 se va un poco lejos. No se si ves por donde voy. Llegados a este punto me puedes decir: "es que para indentar hay que usar tabs, pero para alinear hay que usar espacios", entonces yo te contestaría que tienes toda la razón, que si mezclas tabs y espacios de esta manera se ve siempre bien y no importa a cuanto esté configurado el editor de cada uno. Pero nuevamente yo te preguntaría ¿y no es más sencillo usar siempre espacios, que siempre se ve bien, y no hay que andar mezclando cosas? Finalmente, no se si has visto lo de los elastic tabs, pero si los editores interpretaran los tabs tal y como se comenta en esa página, entonces sí tendría sentido usar tabs siempre, y daría igual todo. Un saludo!

  5. Pietro Zuco
    09/12/2008 at 3:09 pm Permalink

    Hola Pau

    Pues tienes toda la razón. Cuando he tenido que alinear, por ejemplo elementos de una matrix, etc he usado espacios. Los tab solo los he usado al principio para sangrar el texto. Siempre he usado los dos.

    Actualmente no todos los editores implementan los elastic tab, así creo que no hay más remedio que hacer una mezcla de las dos cosas. Más que nada por dos razones. Primero, la ratio con la que se usan tabs es muchísimo mayor que la ratio con la que se usan espacios para alinear valores dentro de variables o matrices. La segunda razón deriva de la primera. Si queremos alinear con espacios, dependiendo del editor, podemos hacer que cada tab en lugar de introducir un tab introduzca espacios (por ejemplo con el vi) Pero si introduces por ejemplo, 4 espacios por tab, al final cuando vas a alinear valores en variables o matrices, igualmente no podrás usar la configuración previa. Vas a tener que hacerlo a mano metiendo los espacios necesarios para que sea legible sino tendrías el mismo problema que has explicado previamente.

    Por lo tanto si usas tabs y combinas espacios tendrá cada quien el sangrado que quiera y las variables ordenadas en el modo correcto. Digo correcto, porque en temas de sangrado pueden haber opiniones pero en tema de ordenar los valores en una lista de variables, impera el sentido común.

    Comentabas esta pregunta:
    >¿y no es más sencillo usar siempre espacios, que siempre se ve bien,
    > y no hay que andar mezclando cosas?

    Depende. Si usas solo espacios, tendrás todo formateado de forma que lo que tu ves en tu editor es lo que yo veo en el mio. El único inconveniente que le veo a esto es que la mayoría de la gente tiene «gustos» en cuanto a sangrado pero no en cuanto a ordenar una lista de valores.

    Por ejemplo, tomando tu código de arriba:

    void function (void)
    {
    [tab] int i, var, variable, variable_larga;
    [tab] i = 1;
    [tab] var = 1;
    [tab] variable = 1;
    [tab] variable_larga = 1;
    }

    En el navegador no se puede apreciar por el tipo de fuente. Si lo pegamos en un simple editor, los 1 quedarían alineados manteniendo los tabs a la izquierda.
    Personalmente creo que la alineación de los valores es deseada por todos pero el sangrado es una cosa de gustos. Si usas solo espacios, el que desee ver un sangrado diferente no podrá.

    De todas formas creo que un código por más buen sangrado y alineación que tenga, si no está bien comentado y no usa una lógica clara al final acaba siendo más difícil de seguir el mejor formateado 🙂

    Actualmente usas solo espacios, mezclas los dos o solo tabs?

    Un saludo.

    PS: Por cierto muy interesante el blog, lo pillé por twitter 🙂

  6. Pau Sanchez
    10/12/2008 at 4:54 am Permalink

    Actualmente uso sólo espacios, y siempre uso la tecla TAB para indentar 🙂

    El problema de tabs y espacios, no es a nivel estético, porque está claro y estoy de acuerdo contigo (como ya dije en el otro comentario) en que da igual la configuración que se tenga, que se va a ver bien. El problema que si usas tabs y espacios de la forma descrita, tienes que andar usando la tecla tab sólo para indentar, y el espacio para alinear. Si lo piensas, verás que es mucho más cómodo usar siempre la tecla tab, incluso para alinear, porque el editor ya alinea por ti, con lo cual te ahorras tiempo.

    Nuevamente, y quitando de enmedio a los elastic tabs, si los editores implementaran un modo mixto (mejor llamemoslo modo inteligente, que queda más elegante), en el que cuando uses el TAB realmente se escriba un tabulado, pero sólo a principio de linea, y cuando se escriba cualquier otra cosa, los tabs se interpretaran como espacions, entonces y sólo entonces vería más cómodo usar tabs, porque la tecla de TAB sería «inteligente», y sabría que si has hecho 3 tabs, y escribes algo, a partir de ese punto, en esa linea, los tabs son X espacios alineandose en múltiples de X (donde X es preferiblemente 2 o 4).

    PD: gracias por tus comentarios, me gustan las discusiones sanas 😉

  7. Pietro Zuco
    10/12/2008 at 5:41 am Permalink

    No estoy seguro pero lo último que comentas (El tab inteligente) creo que se podría implementar en vi o emacs. No conozco ni uso otros editores. Le echaré un vistazo. Si te enteras de como hacerlo, pasa el dato 🙂

    Un saludo.

  8. Pau Sanchez
    10/12/2008 at 10:06 am Permalink

    No creo que sea demasiado difícil de implementar, la lógica es muy sencilla.
    Si me entero de algo ya avisaré.

  9. Miki
    15/05/2014 at 10:51 pm Permalink

    si tan buenos son los espacios ¿que pasa si hay varios programadores y uno usa 2 espacios y otro usa 4? o si por error borras uno, y se queda a 3.

    El tabulador siempre va a ser un tabulador

  10. DroideZombie
    16/01/2015 at 1:11 pm Permalink

    Sin duda alguna el TAB es la mejor opción por 4 puntos esenciales:

    1) TAB está predefinida, y si bien la cantidad de «espacios» dependerá del editor el código ascii para TAB es genérico se encuentre en el entorno en el que se encuentre.

    2) Hoy en día todos los editores respetables de código permiten la configuración de equivalencia de «espacios» asociada al TAB.

    3) mejora la velocidad de tipeo al ser solo una tecla y reduce la posibilidad de error que es mucho mayor al tener que tipear 2 espacios.

    4) La última y para mi la más importante reduce el tamaño de los archivos. una TAB es un Byte, 2 espacios son 2 bytes… por ende reduce en un 50% el tamaño físico utilizado para la identación.

Trackbacks

  1. [...] de los dos artículos reflexionando sobre la indentación y sobre si los espacios son mejor que los tabs a…