所以,真正有意义的组合是前3个 。我们可以选择其它符号来表达这3种意思 , 但从外观及传统上,空格,减号,下划线 , 这3个符号是比较好的选择 。
为什么要用下划线?最初,我们要用下划线,是因为减号用来表示减法了 。my-var 表示变量 my 减去 var;如果一个变量含有多个英语单词,为了区分它们,而你又不想用骆驼命名法MyVar,就要用下划线的my_var 。大多数编程语言里都这是这样 。
这种对标识符的要求会泛化,比如 Python 里 package 的名字里只能用下划线而不能用减号 , 从而导致作为模块的文件名不能用减号(但作为一般的不被引用的程序文件还是可以用减号的) 。
这种泛化进一步蔓延到了C/C++世界里,比如Google prefer的C++文件名是下划线(尽管可以用减号) 。
这种泛化最后可能会蔓延到所有需要连接单词的场景上 。毕竟人们更容易接受单一的规则 。
可以不用下划线的编程世界但这不是绝对的 。
LISP类语言在能明确区分操作符和连接符的语法里,标识符就可以包含减号了,比如LISP,操作符是前置的,元素以空格或括号分隔,这样标识符就可以随意包含减号了 。
(let ((my-var 300) (your-var 100))(print (- my-var your-var)))
上面的和下面的代码,结果都是200 。"var-300", "var-100", 甚至"300-300", "1-100"都只是标识符而已,不会被当作减法表达式 。只有列表里的第一个元素是减号才表示减法操作 。
【下划线是什么东东 下划线是什么样子的】(let ((var-300 300) (var-100 100))(print (- var-300 var-100)))(let ((300-300 300) (1-100 100))(print (- 300-300 1-100)))
HTML世界在XSL中 , 大量使用带减号的关键字,比如for-each, value-of, copy-of 。同样 , 你自己的标识符当然也可以包含减号,比如下面代码中的my-header 。
<xsl:variable name="my-header"><tr><th>Title</th><th>Artist</th></tr></xsl:variable><xsl:template match="/"><table border="1"><xsl:copy-of select="$my-header" /><xsl:for-each select="catalog/cd"><tr><td><xsl:value-of select="title"/></td><td><xsl:value-of select="artist"/></td></tr></xsl:for-each></table></xsl:template>
CSS中也是这样 。
.banner {border: solid black 1px;box-shadow: 1px 2px;background-color: yellow;text-align: center;box-sizing: border-box;width: calc(100% - 80px);}
它有专用的关键字用来引用变量的值(var) , 和做表达式计算(calc),所以它可以肆无忌惮地用减号开头的标识符 。
.foo {--widthA: 100px;--widthB: calc(var(--widthA) / 2);--widthC: calc(var(--widthB) / 2);width: var(--widthC);}
一种感觉,在HTML的世界里,似乎很抵触用下划线 。HTML/CSS/XML/XSL的关键字里,似乎都是用减号而不是用下划线 。
思考:语言只是一种约定吗?小时候,一些读错的多音字,现在已经变成了正确的 。因为大多数人都按照“错误”的在读,比如呆板 , 曝光,等等 。
毕竟 , 语言的功用是交流,大多数人都能理解才是重要的,既然绝大多数人都认为它应该那么念,“将错就错”也没什么不好 。而且,原来的那种“正确”的读音也没有反映出更多或更正确的本质 。
我就职的上一家公司 , 到处都是下划线,比如在Linux内核代码里,如果看到下划线命名的文件,那基本上就是我们公司增加的 。换了一家公司后,这种现象有过之而无不及,几乎凡是需要连接单词的地方,都是用下划线 。
推荐阅读
- 干洗的原理 干洗的原理是什么
- n是火线还是零线 n是什么线
- cisa是什么证书 cisa是什么的简称
- 孕妇梦到花生米 孕妇梦到花生米是什么意思
- 梦到小鸡出壳 梦到小鸡出壳是什么预兆
- 梦到树落叶 梦到树落叶是什么意思
- 梦到自己养了一群小鸡 梦到自己养了一群小鸡是什么意思
- 梦到自己扫落叶 梦到自己扫落叶是什么意思
- 下字的音节是什么 下字的音节是什么?
- 梦到木耳 梦到木耳是什么预兆