文件命名,下划线还是中划线?
当文件名包含多个单词,应该用什么作分隔符?
首先肯定不能使用空格。然后一般在中划线(或称连字符) -
和下划线 _
中做选择。
考虑的因素主要在于使用环境:
文件是否需要被搜索引擎搜索
通常公布到网络时文件名作为 url 的一部分。
然而 Google 搜索引擎会将 _
连接的单词作为一个单词。比如搜索 web_site
实际上只会找关键词 website
。
只有 web-site
会分为 web
和 site
来查找。即:
- This_is_a_single_word
- This-is-a-sentence-with-multiple-words
所以这是个 SEO 问题。如果要考虑到搜索引擎,那么就用 -
文件名能否被环境解析
比如 Java、Python、Go 语言:
命名源文件和目录不可以用连字符(减号),否则不能被 Python 或 Java import,因为他们要求目录和文件名都是像变量名那样的标识符。命名变量当然也不可以用连字符(减号)。所以其实是统一的。
这就是为什么 Go 语言的 import 要用字符串 “fmt” 的原因了。
对于 Java,这进一步影响了公司的域名,例如 com.chenshuo.rpc 是合法的 package 名字,但是 com.china-pub.rpc 和 com.163.rpc 就不合法了。再引申一下,如果目录名是域名的一部分,恐怕也应该避免下划线,因为域名里通常没有下划线。
比如 LaTeX:
LaTeX 的源文件(包括图片)不要有下划线,否则 include 会出错。
此条源自陈硕的知乎回答。
英文文法
如果既不需要关心搜索引擎,也不需要关心编程语言环境的问题。那么就考虑英文文法。 连字符在英文里是有意义的,比如复合词,例如
- upper-case letter
- non-English-speaking peoples
- the post–World War II years
- a hospital–nursing home connection
- a nursing home–home care policy
- a quasi-public–quasi-judicial body
为了保留连字符在复合词的作用,那么文件命名时,就应该使用下划线来代替空格。
结论
不同场景结论会不一样,根据以上三个判断来决定用 -
还是 _
。
注意点
- 正则表达式
\w
不会识别-
,但是会识别_