Identar con espacios o con tabuladores ¿qué es lo correcto?

Como curiosidad y para acompañar el artículo: según una encuesta de Stack Overflow tu sueldo puede aumentar o disminuir según como identes. A eso le dedicaré un párrafo al final, a ver si después del argumentario consideras que está justificado.

Ahora sí, al tema:

Ventajas de identar con tabuladores

Reconozco que a mí sólo se me ocurría un motivo. Yo no lo hago así y he tenido que rebuscar en foros y artículos para intentar entenderos. A ver si lo he conseguido:

Son un carácter especialmente diseñado para eso. No sé muy bien cual es la ventaja de esto, pero lo cierto es que no le falta razón, quizá no es algo importante per se, pero sí puede ser la base de otras ventajas.

Permite al desarrollador decidir cómo se ve el código, según las preferencias de su editor. Esta sí me parece realmente válida porque elimina el siguiente debate ¿cuántos espacios? ya que cada desarrollador puede escoger en las preferencias de su IDE si quiere verlo más o menos identado. Pero también me parece muy peligroso y tiene un requisito, a ver si lo explico con unas lineas de código ficticio:

private static _methodA(){
····return array(
········'foo-bar'·=> 'baz',
········'x'·······=> 'y',
····);
}

Pongo · para representar espacios. Siempre se recomienda identar los valores de los arrays de manera que empiecen siempre en la misma columna ya que mejora mucho la legibilidad. Con espacios siempre se verá exactamente igual. Con tabuladores sin embargo es muy probable que cada desarrollador lo vea diferente ya que un tabulador no representa un tamaño concreto y si en una linea hay 2 y en la otra 3, se verá totalmente desalineado, empeorando la legibilidad cuando se trataba de mejorar.

Aquí una imagen para ilustrar el problema:

Por eso la guía de WordPress especifica que habría que usar tabs para identar la linea y espacios para los valores alineados. Personalmente no le acabo de ver el sentido.

Es imposible usar medio tabulador. Correcto. Pero no es más peligroso equivocarte poniendo menos espacios que equivocarte poniendo más tabuladores.

Ventajas de identar con espacios

Se ve igual en cualquier lugar. Un espacio es un espacio y da igual tu configuración, si cambia su tamaño también cambiará el resto caracteres. Esto podría entenderse como una desventaja puesto que es como obviar la configuración de tu editor, pero a la hora de la verdad, resulta que esa desventaja no es relevante. No sólo no se suele necesitar ampliar el tamaño de una identación, si no que lo que se aconseja es acortar la longitud de la linea.

Por ejemplo, cuando alguien publica lineas con tabuladores, si ves el código en el visor de GitHub o similares, suele verse hecho un desastre. La cosa no suele mejorar cuándo lo estás editando en tu IDE, ya que sólo lo verás bien si utilizas su misma configuración, poco probable a menos que ninguno de los dos se haya ajustado las preferencias.

Mi opinión

A decir verdad, en las ventajas de los tabuladores lo único que he hecho ha sido ponerlas en duda, y en las de los espacios sólo he puesto una, pero creo que ella sola es más que suficiente. Opino que usar espacios es lo correcto. En concreto, dos espacios.

Evidentemente esto debería depender del proyecto. Si no es tu proyecto y sólo estás participando en él, usa lo que esté usando. Si es tu proyecto, siempre estás a tiempo de cambiar de idea y cambiar de un estilo a otro.

Y para terminar

Como decía al principio, hay una encuesta que revela que los desarrolladores que identan con espacios cobran más. En concreto un 8,6%, o el equivalente a 2,4 años de experiencia. Es importante recordar que correlación no implica causalidad, aún así, si buscas un aumento…


P.d.: La palabra identar no existe. Se trata de un anglicismo y la RAE no lo reconoce. La palabra correcta es sangrar pero creo que se entiende mejor con el anglicismo.

¿Quieres más? 👇
Recopilatorio de buenas prácticas para el día a día.

Comentarios (1)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.