Trước đây, tôi luôn sử dụng dấu gạch dưới để xác định các thuộc tính lớp và id trong HTML. Trong vài năm qua, tôi đã thay đổi thành dấu gạch ngang, chủ yếu là để phù hợp với xu hướng trong cộng đồng , không nhất thiết là vì nó có ý nghĩa với tôi.
Tôi đã luôn nghĩ rằng dấu gạch ngang có nhiều nhược điểm hơn và tôi không thấy lợi ích:
Hoàn thành & chỉnh sửa mã
Hầu hết các biên tập viên coi dấu gạch ngang là dấu phân cách từ, vì vậy tôi không thể chuyển qua biểu tượng tôi muốn. Giả sử lớp là " featured-product
", tôi phải tự động hoàn thành " featured
", nhập dấu gạch nối và hoàn thành " product
".
Với dấu gạch dưới " featured_product
" được coi là một từ, vì vậy nó có thể được điền vào một bước.
Điều tương tự áp dụng để điều hướng thông qua các tài liệu. Nhảy bằng từ hoặc nhấp đúp vào tên lớp bị phá vỡ bởi dấu gạch nối.
(Nói chung, tôi nghĩ rằng các lớp và id là mã thông báo , vì vậy nó không có ý nghĩa với tôi rằng mã thông báo phải dễ dàng chia tách trên các dấu gạch nối.)
Sự mơ hồ với toán tử số học
Sử dụng dấu gạch ngang phá vỡ quyền truy cập thuộc tính đối tượng để tạo thành các phần tử trong JavaScript. Điều này chỉ có thể với dấu gạch dưới:
form.first_name.value='Stormageddon';
(Phải thừa nhận rằng bản thân tôi không truy cập các phần tử biểu mẫu theo cách này, nhưng khi quyết định dấu gạch ngang so với dấu gạch dưới là quy tắc chung, hãy xem xét rằng ai đó có thể.)
Các ngôn ngữ như Sass (đặc biệt là trong toàn bộ khung La bàn ) đã giải quyết các dấu gạch ngang như một tiêu chuẩn, ngay cả đối với các tên biến. Ban đầu họ cũng sử dụng dấu gạch dưới. Thực tế là điều này được phân tích cú pháp khác nhau đánh tôi là kỳ quặc:
$list-item-10
$list-item - 10
Không thống nhất với cách đặt tên khác nhau giữa các ngôn ngữ
Trước đây, tôi thường viết underscored_names
cho các biến trong PHP, ruby, HTML / CSS và JavaScript. Điều này thuận tiện và nhất quán, nhưng một lần nữa để "phù hợp" tôi hiện đang sử dụng:
dash-case
trong HTML / CSScamelCase
trong JavaScriptunderscore_case
trong PHP và ruby
Điều này thực sự không làm phiền tôi quá nhiều, nhưng tôi tự hỏi tại sao những điều này trở nên sai lệch, dường như có chủ đích. Ít nhất với dấu gạch dưới có thể duy trì tính nhất quán:
var featured_product = $('#featured_product'); // instead of
var featuredProduct = $('#featured-product');
Sự khác biệt tạo ra tình huống trong đó chúng ta phải dịch các chuỗi không cần thiết, cùng với khả năng xảy ra lỗi.
Vì vậy, tôi hỏi: Tại sao cộng đồng gần như phổ biến trên dấu gạch ngang, và có bất kỳ lý do nào vượt trội hơn so với dấu gạch dưới?
Có một câu hỏi liên quan từ thời điểm này bắt đầu, nhưng tôi cho rằng đó không phải (hoặc không nên ) chỉ là vấn đề của hương vị. Tôi muốn hiểu lý do tại sao tất cả chúng ta giải quyết theo quy ước này nếu nó thực sự chỉ là vấn đề của hương vị.