过去,我一直使用下划线在HTML中定义类和id属性。在过去的几年中,我改用破折号,主要是为了使自己适应社区中的趋势,而不一定是因为这对我来说很有意义。
我一直认为破折号有更多弊端,但我看不出这样做的好处:
代码完成和编辑
大多数编辑器将破折号视为单词分隔符,因此我无法跳到想要的符号。假设课程为“ featured-product
”,我必须自动完成“ featured
”,输入连字符,然后完成“ product
”。
带下划线的“ featured_product
”被视为一个单词,因此可以一步完成。
在文档中导航同样如此。跳字或双击类名会被连字符打断。
(更一般而言,我将类和id视为令牌,因此对令牌来说,令牌应该很容易拆分对于我来说没有任何意义。)
算术运算符的歧义
使用破折号会中断对象属性对 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');
差异造成了我们不得不不必要地转换字符串以及潜在错误的情况。
所以我问:为什么社区几乎普遍使用破折号,并且有什么理由要超过下划线?
从开始的那段时间开始就有一个相关的问题,但是我认为这不是(或者不应该)只是一个口味问题。我想了解一下,如果真的只是出于口味问题,为什么我们都同意这个约定。