У минулому я завжди використовував підкреслення для визначення атрибутів класу та 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 та рубіні
Це насправді не дуже мене турбує, але мені цікаво, чому вони стали настільки нестандартними, здавалося б, цілеспрямовано. Принаймні, з підкресленнями можна було зберегти узгодженість:
var featured_product = $('#featured_product'); // instead of
var featuredProduct = $('#featured-product');
Відмінності створюють ситуації, коли нам доводиться переводити рядки без потреби, разом з можливістю помилок.
Тому я запитую: Чому громада майже повсюдно влаштовується на тире, і чи є причини, які переважають підкреслення?
З того часу, як це почалося, виникає пов'язане питання , але я вважаю, що це не (або не повинно було бути) лише справою смаку. Я хотів би зрозуміти, чому ми всі домовилися про цю конвенцію, якщо це насправді було лише питанням смаку.