В прошлом я всегда использовал подчеркивания для определения атрибутов класса и идентификатора в 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/CSS -
camelCase
в JavaScript -
underscore_case
в PHP и ruby
Это меня не слишком беспокоит, но мне интересно, почему они стали настолько смещенными, по-видимому, нарочно. По крайней мере, с подчеркиваниями можно было поддерживать согласованность:
var featured_product = $('#featured_product'); // instead of
var featuredProduct = $('#featured-product');
Различия создают ситуации, в которых мы должны переводить строки без необходимости, а также вероятность ошибок.
Поэтому я спрашиваю: почему сообщество почти повсеместно оседает на тире и есть ли какие-то причины, которые перевешивают подчеркивания?
Существует связанный с этим вопрос со времени его начала, но я полагаю, что он не (или не должен был быть) просто вопрос вкуса. Я хотел бы понять, почему мы все решили эту конвенцию, если это действительно было просто вопросом вкуса.