В прошлом я всегда использовал подчеркивания для определения атрибутов class и id в HTML. За последние несколько лет я перешел на тире, в основном, чтобы присоединиться к тенденции в сообществе , не обязательно, потому что это имело смысл для меня.
Я всегда думал, что у черт есть больше недостатков, и я не вижу преимуществ:
Завершение кода и редактирование
Большинство редакторов рассматривают дефисы как разделители слов, поэтому я не могу перейти к нужному символу. Скажите, что класс " featured-product
", я должен автоматически завершить " featured
", ввести дефис и завершить " product
".
С подчеркиванием " featured_product
" рассматривается как одно слово, поэтому его можно заполнить за один шаг.
То же самое относится и к навигации по документу. Прыжок по словам или двойной щелчок по имени класса прерывается дефисами.
(В целом, я думаю о классах и идентификаторах как о токенах , поэтому для меня не имеет смысла, чтобы токен можно было легко разделить на дефисы.)
Неоднозначность с арифметическим оператором
Использование черточек нарушает доступ к свойствам объекта для элементов формы в JavaScript. Это возможно только с подчеркиванием:
form.first_name.value='Stormageddon';
(По общему признанию я не получаю доступ к элементам формы таким способом сам, но при выборе черты против подчеркивания как универсального правила, учтите, что кто-то мог.)
Такие языки, как Sass (особенно в рамках Compass ), в качестве стандарта используют тире даже для имен переменных. Они изначально использовали подчеркивание в начале тоже. То, что это анализируется по-разному, кажется мне странным:
$list-item-10
$list-item - 10
Несоответствие с именами переменных в разных языках
Когда-то я писал underscored_names
переменные на PHP, ruby, HTML / CSS и JavaScript. Это было удобно и последовательно, но опять же, чтобы «вписаться», я сейчас использую:
dash-case
в HTML / CSScamelCase
в JavaScriptunderscore_case
в PHP и ruby
Это не слишком беспокоит меня, но я удивляюсь, почему они стали такими смещенными, казалось бы, нарочно. По крайней мере, с подчеркиванием можно было сохранить последовательность:
var featured_product = $('#featured_product'); // instead of
var featuredProduct = $('#featured-product');
Различия создают ситуации, когда нам приходится переводить строки без необходимости, наряду с возможностью ошибок.
Поэтому я спрашиваю: почему сообщество почти повсеместно остановилось на черточках, и есть ли причины, которые перевешивают подчеркивания?
В то время, когда это началось, есть связанный вопрос , но я считаю, что это не (или не должно было быть) просто вопрос вкуса. Я хотел бы понять, почему мы все согласились с этим соглашением, если оно действительно было делом вкуса.