为什么对 JS 使用 Camel Case 而对数据库使用 Snake Case?

Why use Camel Case for JS and Snake Case for your DB?

有人告诉我在我的数据库中使用蛇形大小写,而不是驼峰式大小写。 JSON API 表示在对象键的单词之间使用破折号。 Javascript,大家都用驼峰命名法。

如果我有一个 RAILS 服务器从 SQL 数据库获取数据,将其作为 json 发送并在 javascript 中使用,我真的需要转换吗在这些符号之间?

为什么不到处使用蛇形盒?

你真的不需要按照标准转换它。遵循命名约定,以便一组开发人员在同一应用程序上工作。

最佳做法是遵循组织定义的命名约定,以便开发人员更好地理解代码。

对于JavaScript,是否要使用驼峰式大小写取决于您(或项目指南)。但是因为几乎每个主要库和核心 API 都使用驼峰式大小写,所以这样做是个好主意,因为这样你就不需要考虑是否需要使用一个或另一个。

对于 DBMS,它取决于操作系统和 DBMS,因为使用混合字母时可能会遇到技术问题。例如。如果您在 Windows 系统上有一个 MySQL 数据库 运行,那么 MySQL 不会关心 table 名称的大小写,因为文件系统不区分大小写。从那时起,Windows 上的默认 MySQL 配置将自动将所有 table 名称转换为小写。只要您的 DBMS 将保留在 windows 机器上,这就不是问题,但是一旦您决定切换到 Linux 基础服务器,那么您将遇到迁移数据的巨大问题从 windows 到 linux 框。

为了不依赖于这些问题,通常只在 DBMS 中使用小写字母,无论 DBMS 是否会遇到 问题 使用大写字母。使用小写字母肯定没有问题,使用大写字母如果有问题则需要进行调查。

您可以使用这个库在两者之间进行转换:case-converter 它将 snake_case 转换为驼峰式大小写,反之亦然

  const caseConverter = require('case-converter')

  const snakeCase = {
    an_object: {
      nested_string: 'nested content',
      nested_array: [{ an_object: 'something' }]
    },
    an_array: [
      { zero_index: 0 },
      { one_index: 1 }
    ]
  }

  const camelCase = caseConverter.toCamelCase(snakeCase);

  console.log(camelCase)
  /*
    {
      anObject: {
        nestedString: 'nested content',
        nestedArray: [{ anObject: 'something' }]
      },
      anArray: [
        { zeroIndex: 0 },
        { oneIndex: 1 }
      ]
    }
  */

我认为我们经历的主要痛苦是我们试图遵循语言社区内建立的约定,但是当 JSON 从一种语言序列化然后解析为另一种语言的映射时,当变量或对象键现在不遵循相同的约定时,会有一些烦恼。这就是为什么我可能会停止在前端遵循驼峰式大小写约定并在所有地方回到蛇式大小写的原因之一,因为如果整个项目的代码库中只有一种样式,这对我来说认知开销会更少。当然这是一个个人项目,我保证在工作中会遇到很多阻力。