Mejor respuesta
Primero permítanme comenzar diciendo que he sido programador profesional durante aproximadamente 10 años y lo he sido incursionando en la programación desde hace casi 20 años (desde que era muy joven). He escrito PHP, Java, C ++, Python, JavaScript, C #, ASP y QBasic (sí, soy mayor). También me ocupo regularmente de SQL, CSS y HTML.
He usado editores en Windows, Linux y Mac. También he usado editores dentro de las ventanas de la terminal. He estado programando profesionalmente durante unos 10 años. Puedo decirles por experiencia personal, habiendo utilizado más de 30 editores (tanto editores de texto como VIM y Nano como IDE como Visual Studio y PhpStorm), que la visualización predeterminada de las pestañas en los editores varía enormemente.
Además, incluso cuando les da la misma configuración, a veces tiene otras rarezas e inconsistencias causadas por el editor o la fuente de los editores. Los espacios simplemente no tienen ese problema debido a que son una construcción de lenguaje estándar.
Una cosa que he notado consistentemente es que la mayoría de las guías de estilo de programación, como PHP-FIG, le dicen que use espacios de tabulación. Eso es tabulación que usa espacios para imitar el carácter de tabulación. A veces se denomina tabulación inteligente.
Esto es compatible con todos los editores que se te ocurran y que sean razonablemente modernos. Entonces, el argumento sobre la velocidad es completamente ridículo. En cuanto al argumento sobre el espacio ocupado en el disco. Literalmente, a nadie le importa medio byte extra en el tamaño de su archivo. Si eso es lo que le preocupa, entonces se está volviendo loco con el espacio en disco y el costo.
El único argumento que queda es la pantalla visual. Aquí es donde los espacios dejan pestañas en el polvo. No verá la coherencia en las pestañas que ve con espacios. Los espacios tienen el mismo aspecto en absolutamente todos los editores. Las pestañas varían mucho y si alguna vez tiene que abrir un archivo en un editor de terminal (por ejemplo, cuando inspecciona algo en un servidor remoto) odiará tener que lidiar con pestañas, especialmente cuando tiene que desplazarse hacia la derecha en un editor de solo texto.
Si desea coherencia y estandarización (especialmente los estándares más comunes), entonces utilizará espacios. Si solo desea concentrarse en quejas ridículas y cabrear a otros desarrolladores con los que trabaja, utilice las pestañas.
Respuesta
Las ventajas de las pestañas sobre los espacios son:
- Los desarrolladores individuales pueden elegir diferentes sangrías para su código.
- También usan menos espacio de almacenamiento.
Sin embargo, las pestañas tienen problemas.
Las pestañas interactúan mal con los anchos máximos de columna. Project elige anchos máximos de columna por varias razones, incluida la garantía de que los desarrolladores puedan realizar diferencias en paralelo en sus monitores y la garantía de que los desarrolladores puedan escanear el código rápidamente. (Las líneas largas reducen la velocidad de lectura. Esta es la razón por la que los editores usan varias columnas en los libros de texto).
Supongamos que su estándar de codificación especifica una longitud máxima de línea de 80 columnas.
El primer desarrollador desarrollador tiene una línea que se ha sangrado cuatro veces, y están usando una configuración de sangría de dos etiquetas. Esto significa que el código tiene 8 columnas con sangría. El desarrollador escribe una línea completa. Esa línea consta de 72 caracteres.
Este código se envía a un revisor. El revisor observa que el código está usando una sangría de tabulación de 4 caracteres. Las cuatro pestañas ahora tienen 16 caracteres de ancho. La línea ahora va a la columna 88. El revisor le dice al desarrollador que corte 8 caracteres.
El segundo revisor que mira el código está usando una sangría de 8 caracteres. El revisor mira el código usando una sangría de tabulación de 8 caracteres. Las cuatro pestañas tienen 32 caracteres de ancho. El revisor le dice al desarrollador que corte 24 caracteres.
Estos problemas desaparecen si usa espacios o especifica una configuración de pestaña uniforme para la organización. Si está especificando una configuración de pestaña fija, entonces ha eliminado uno de los argumentos principales para usar pestañas para empezar.
Ahora consideremos un documento aquí o una cadena de varias líneas que contiene texto formateado. Puede incrustar un diagrama creado con una herramienta como asciiflow o monodraw. Si usa tabulaciones para las sangrías, entonces la sangría de los dibujos requerirá el uso de una combinación de sangrías y espacios. Hacer que esto funcione con diferentes sangrías de tabulación requiere:
- Usar una combinación de tabulaciones iniciales seguidas de espacios para alinear a una columna determinada. Todas las líneas de la imagen deben tener el mismo número de sangrías de tabulación o la imagen no se verá correcta cuando se use con otras configuraciones de sangría de tabulación.
- Poner un carácter de marcador para indicar el comienzo de la sección delimitada por espacios. p.ej. \ t / * \ n \ t * foo \ n \ t *. | \ n \ t * bar \ n \ t * / \ n
- Abandonar el estándar de pestañas en estas áreas gráficas.
- Prohibir las cadenas de varias líneas o los comentarios.
Todos estos problemas desaparecen cuando usa espacios para sus sangrías.