En el pasado, siempre he usado guiones bajos para definir atributos de clase e id en HTML. En los últimos años cambié a guiones, principalmente para alinearme con la tendencia en la comunidad , no necesariamente porque tenía sentido para mí.
Siempre he pensado que los guiones tienen más inconvenientes, y no veo los beneficios:
Finalización y edición de código
La mayoría de los editores tratan los guiones como separadores de palabras, por lo que no puedo pasar al símbolo que quiero. Digamos que la clase es " featured-product
", tengo que completar automáticamente " featured
", ingresar un guión y completar " product
".
Con guiones bajos " featured_product
" se trata como una palabra, por lo que se puede completar en un solo paso.
Lo mismo se aplica a la navegación por el documento. Saltar por palabras o hacer doble clic en los nombres de las clases está dividido por guiones.
(En términos más generales, pienso en las clases y los identificadores como tokens , por lo que no tiene sentido para mí que un token se pueda dividir tan fácilmente en guiones).
Ambigüedad con operador aritmético
El uso de guiones rompe el acceso a la propiedad del objeto para formar elementos en JavaScript. Esto solo es posible con guiones bajos:
form.first_name.value='Stormageddon';
(Es cierto que no accedo a los elementos del formulario de esta manera, pero al decidir sobre guiones vs guiones bajos como regla universal, considere que alguien podría hacerlo).
Idiomas como Sass (especialmente en todo el marco de Compass ) se han asentado en guiones como estándar, incluso para nombres de variables. Originalmente usaban guiones bajos al principio también. El hecho de que esto se analice de manera diferente me parece extraño:
$list-item-10
$list-item - 10
Inconsistencia con nombres variables entre idiomas
En el pasado, solía escribir underscored_names
para variables en PHP, ruby, HTML / CSS y JavaScript. Esto fue conveniente y consistente, pero nuevamente para "encajar" ahora uso:
dash-case
en HTML / CSScamelCase
en JavaScriptunderscore_case
en PHP y ruby
Esto realmente no me molesta demasiado, pero me pregunto por qué estos se desalinearon, aparentemente a propósito. Al menos con guiones bajos fue posible mantener la consistencia:
var featured_product = $('#featured_product'); // instead of
var featuredProduct = $('#featured-product');
Las diferencias crean situaciones en las que tenemos que traducir cadenas innecesariamente, junto con la posibilidad de errores.
Entonces, pregunto: ¿por qué la comunidad se decidió casi universalmente en guiones, y hay alguna razón que supere los subrayados?
Hay una pregunta relacionada desde el momento en que esto comenzó, pero soy de la opinión de que no es (o no debería haber sido) solo una cuestión de gustos. Me gustaría entender por qué todos nos decidimos por esta convención si realmente era solo cuestión de gustos.