Tal vez estoy solo en esto, pero pocas cosas me molestan, como las personas que usan sangría en lugar de pestañas. ¿Cómo es que escribir es SpaceSpaceSpaceSpacemás fácil e intuitivo que escribir Tab? Claro, el ancho de la pestaña es variable, pero es mucho más indicativo del espacio de sangría que los espacios. Lo mismo ocurre con el retroceso; retroceso una o cuatro veces?
¿Por qué los lenguajes como Python recomiendan usar espacios sobre pestañas?
indentation
Naftuli Kay
fuente
fuente
tab
. Si no puede configurar eso en su editor favorito, necesita un mejor editor.Respuestas:
Consistencia, principalmente.
Además, de vez en cuando aparece algo que en realidad usa el espacio en blanco, como Python: Dime, ¿qué pasará si ejecuto el siguiente fragmento de código?
Luego están los casos frustrantes cuando el editor de un desarrollador tiene pestañas configuradas en 8 espacios, y otro las configura en 4 y alguien usa 5 por alguna extraña razón ... Puede parecer perfectamente normal en una estación de trabajo, pero luego cuando se registra en SVN y alguien más se actualiza, verán un horrible, horrible desastre.
Esas son dos buenas razones para ser siempre coherentes, ya sean espacios o pestañas.
Pero los espacios permiten mucho más control sobre la sangría que las pestañas, y no requieren ninguna configuración especial en los editores para que funcione. (Aunque puede hacerse más fácil, por ejemplo, en vim, solo use
set expandtab
para insertar espacios cada vez que presione la pestaña)EDITAR: Y lo suficientemente divertido, el sitio parece haber normalizado mis pestañas en espacios para que el navegador pueda mostrarlo correctamente. Haga clic en "editar" para ver el original, con pestañas incluidas;)
fuente
Esta es una buena discusión sobre sangría y espacios en blanco en Python; del artículo:
En cuanto a su argumento acerca de presionar la barra espaciadora o la tecla de retroceso 2 o más veces, ya que la mayoría de los editores de código fuente insertarán una cantidad configurable de espacios con solo presionar la tecla de tabulación, y de forma similar sin sangría, no hay más teclas presionadas cuando usando espacios para sangrar.
Para mí, prefiero espacios porque el código siempre se muestra con la misma cantidad de sangría, ya sea que lo esté viendo en un IDE
less
, o en el Bloc de notas; es decir, los espacios son más portátiles.fuente
En Python, la sangría controla el flujo del programa, por lo que es vital.
Si toma código formateado con pestañas y lo copia para que las pestañas cambien o se pierdan, la estructura del código se destruye. Los espacios son siempre espacios = mucho más seguros.
Si el desgaste de su barra espaciadora le preocupa, su editor probablemente se puede configurar para convertir pestañas en espacios automáticamente.
fuente
.vimrc
de mí? :)set softtabstop=4
, y TAB y BACKSPACE usarán 4 espacios como una pestaña. (Bueno, para cada tabulación, tratando el ancho como 4 espacios)Siempre se deben usar espacios, ya que las pestañas por sí solas no son lo suficientemente flexibles para muchos estilos, y la combinación de pestañas y espacios (casi) siempre produce un desorden absoluto.
Para un ejemplo de un estilo que generalmente necesita espacios, considere algo como:
A menos que esté dispuesto a cambiar el nombre de todas sus funciones para que sean un múltiplo exacto del tamaño de la pestaña (menos una para el paréntesis), las pestañas por sí solas simplemente no harán esto.
En cuanto a la combinación de pestañas y espacios, casi inmediatamente se encuentra con un problema grave: las pestañas no se expanden de la misma manera. Algunos programas tratan una pestaña como equivalente a un número específico de espacios. Otro software expandirá un módulo de pestañas un número específico de espacios, por ejemplo, un elemento después de una pestaña siempre comenzará en un número de columna que es un múltiplo de (digamos) 8.
Incluso si puede asegurarse de que los espacios no se mezclen con sus pestañas, todavía tiene un problema: las pestañas también funcionan mal con las fuentes de ancho variable. Este problema surge cuando (por ejemplo) desea alinear comentarios finales:
Tal como están ahora, todos se alinean perfectamente. Visto con una fuente de ancho variable, sin embargo, las cosas se ponen feas. Con espacios, los comentarios pueden (a menudo lo harán) ligeramente desalineados. Con las pestañas, sin embargo, la desalineación a menudo se vuelve bastante radical:
De repente, la pequeña diferencia de ancho entre la 'i' y la 'm' o 'x' en nuestra fuente de ancho variable se ha ampliado a una tabulación completa.
La conclusión es que casi cualquier cambio en la forma de ver el código con pestañas, sin importar cuán aparentemente trivial, puede y generalmente producirá un lío ilegible.
Para responder a sus otras preguntas: otras ya lo han señalado, pero no puedo imaginar a nadie en un editor de programación (o mucho más) que realmente use la barra espaciadora para insertar los espacios, por lo que su pregunta sobre: "escribir spacespacespacespace" es irrelevante porque nadie lo hace de todos modos. Del mismo modo con el retroceso: es difícil imaginar un editor que requiera presionar BkSpccuatro veces para ir a una tabulación anterior, por lo que (nuevamente) la pregunta es irrelevante.
En pocas palabras: las pestañas están bien si usted (y solo usted) alguna vez mira su código, y solo lo hace con un solo editor que nunca reconfigura (¡en absoluto!) Sin embargo, esas condiciones son casi imposibles de exigir que solo haya una respuesta razonable: nunca use pestañas.
fuente
El gran problema es la inconsistencia del ancho de la "pestaña", a veces se representan como cuatro espacios, a veces ocho. En muchos editores, puede configurarlos para que sean de 1 a 9 espacios.
Entonces, esto convierte un simple editor WYSWYG en Lo que ves es lo que alguien más podría obtener.
Es un problema particular para Python, pero también es un problema en cualquiera de los lenguajes de "llaves", ya que la sangría se usa para transmitir significado a los lectores humanos y las pestañas en mal estado hacen que el código sea difícil de leer.
fuente