tl;dr;
没有一个真正的答案。您可以从众多标准中选择一个,或者根据与谁一起工作来创建自己的标准。并且 100% 依赖于平台。
原帖
只需考虑另一种标准:
<div id="id_name" class="class-name"></div>
在你的脚本中:
var variableName = $("#id_name .class-name");
这只是对变量、id 和类分别使用驼峰式、under_score 和连字符。我已经在几个不同的网站上阅读过这个标准。尽管在 css/jquery 选择器中有点冗余,但冗余使捕获错误更容易。例如:如果你在 CSS 文件中看到 .unknown_name 或 #unknownName,你就知道你需要弄清楚它实际指的是什么。
2019 年更新
(连字符称为'kebab-case',下划线称为'snake_case',然后你有'Title Case'、'PascalCase'和'camelCase')
我个人不喜欢连字符。我最初将其发布为一种替代方法(因为规则很简单)。但是,连字符使选择快捷方式变得非常困难(双击、ctrl/option + left/right 和 ctrl/cmd+D。此外,类名和文件名是连字符唯一起作用的地方,因为它们几乎总是在引号或css等。但快捷方式仍然适用。
除了变量、类名和 ID,您还想查看文件名约定。还有 Git 分支。
我办公室的编码小组实际上在一两个月前召开了一次会议,讨论我们将如何命名事物。对于 git 分支,我们无法在 321-the_issue_description 或 321_the-issue-description 之间做出决定。 (我想要 321_theIssueDescription,但我的同事不喜欢。)
一个例子,展示如何使用其他人的标准......
Vue.js 确实有一个标准。实际上,他们的几个项目有两个替代标准。我不喜欢他们两个版本的文件名。他们推荐"/path/kebab-case.vue" 或"/path/PascalCase.Vue"。前者更难重命名,除非你特别想重命名它的一部分。后者不利于跨平台兼容。我更喜欢"/path/snake_case.vue"。但是,在与其他人或现有项目合作时,遵循已经制定的任何标准都很重要。因此,我在 Vue 中使用 kebab-case 作为文件名,尽管我会完全抱怨它。因为不遵循这意味着要更改 vue-cli 设置的大量文件。
2021 年更新
在我生命中的这一点上,我尝试专门使用kebab-case 作为项目文件名。
还有一个奇怪的snake_case.kebab-case.dot.case.Title.Case 组合,用于人类交流的文件。对于五四下午 1:02 生成的报告,像包含报告的 excel 文件可能是 "Report_Name-Report_Type-2021.05.04_13.02"。我实际上打算在所述报告名称中使用Title Case,但是如果您重新保存文件,您将没有空格。我打算使用 kebab-case 并使 datestamp 符合 ISO 标准,但客户感到困惑,因为他们使用美国月-日-年格式作为日期。另一个例子是"SomeRequestForm-ProjectName-01.pdf"。
客户端可读的东西很难解决。
我尽可能避免使用空格(并且客户不会要求它们),因为它们不是 cli 安全的。我已经采用 Angular 方法来处理项目中的文件名。 some-thing.type.ts,其中描述为kebab-case,文件中存储的对象的标准类型以扩展名之类的点分隔。我通常不做some-area_some-thing.type.ts,除非该文件是独立且可移植的。如果它在一个项目中,那么我只使用像some-area/some-thing.type.ts这样的文件夹
此外,我将 kebab-case 用于 css 类,有时将 snakeAndCamel_case 混合用于 html id,但通常我不再使用 html id,因为我使用可重用组件,这会中断。当我确实使用 id 时,它通常类似于someComponent-someElement_49bea6c9-551b-400a-a3e0-59ed40967646,其中 uuid 是每个组件实例自行分配的生成 uuid。这在 Angular 中不受支持,因此我倾向于提出其他解决方法,例如将整个表单输入保留在标签内。
此外,对于变量名,我仍然主要使用驼峰式,除了类名,有时还有函数名。使用外部软件包时,我只是做他们正在做的事情。对于模仿环境变量的东西,我确实使用ALL_CAPS_SNAKE_CASE,这包括node.js process.env.SOME_ENV_VAR 和combinedConfiguration.SOME_ENV_VAR(当我使用参数配置覆盖process.env 时)
我的 tl;dr;几年后仍然适用。没有一个真正的答案。但尽量为每个项目保留一种风格。并尽可能减少符号中的单词数。