简单记录一下命名规则

简单记录一下命名规则

在这里插入图片描述

1. 记录一下

在编程中,命名规则(也称为命名约定)是非常重要的,它可以帮助我们编写出更易于理解和维护的代码。一直记不住到底有哪些,稍微记一下!

以下是一些常见的命名规则:

  1. 驼峰命名法(Camel Case)

    每个单词的首字母大写,除了第一个单词。例如:firstName

  2. 帕斯卡命名法(Pascal Case)

    每个单词的首字母都大写。例如:FirstName

  3. 下划线命名法(Snake Case)

    单词之间用下划线连接,所有字母都小写。例如:first_name

  4. 短划线命名法(Kebab Case)

    单词之间用短划线连接,所有字母都小写。例如:first-name

  5. 大写命名法(Upper Case)

    所有字母都大写,单词之间可以用下划线连接。例如:FIRST_NAME

  6. 小写命名法(Lower Case)

    所有字母都小写,单词之间可以用下划线连接。例如:first_name

以上是一些常见的命名规则,但具体使用哪种规则,往往取决于编程语言的习惯和团队的约定。

无论使用哪种命名规则,最重要的是保持一致性。在一个项目中,所有的命名都应该遵循同一种规则,这样可以使代码更易于阅读和理解。

2. 一个有趣的东西

写到这里突然想到一个蛮有趣的东西,就是给你一个对象,怎样将对象的 key 转化为上述的各个命名方式。当然,这个对象是未知的,key 也可能是各种形式,first-namefirstName 或者 First-Name 等等,也可能嵌套了很多层,里面也可能有各种数据。

function toCamelCase(str) {
  // 检查字符串是否已经是camelCase格式
  if (/^[a-z]+([A-Z][a-z]*)*$/.test(str)) {
    return str;
  }
  // 将字符串转换为小写并用空格分隔
  str = str.toLowerCase().replace(/[-_\.]/g, ' ');
  console.log(str);
  // 将每个单词的首字母大写,除了第一个单词
  str = str.replace(/\s(.)/g, function($1) { return $1.toUpperCase(); });

  // 删除空格
  str = str.replace(/\s/g, '');

  // 将第一个字符转换为小写
  str = str.replace(/^(.)/, function($1) { return $1.toLowerCase(); });

  return str;
}

function convertKeysToCamelCase(obj) {
  if (typeof obj !== 'object' || obj === null) {
    return obj;
  }

  if (Array.isArray(obj)) {
    return obj.map(convertKeysToCamelCase);
  }

  return Object.keys(obj).reduce((acc, key) => {
    const camelCaseKey = toCamelCase(key);
    acc[camelCaseKey] = convertKeysToCamelCase(obj[key]);
    return acc;
  }, {});
}

const testObj = {
  'first-name': 'John',
  lastName: 'Doe',
  'Some-Key': 'Some Value',
  'NESTED_OBJECT': {
    'NESTED_KEY': 'Nested Value',
    AnotherNestedKey: {
      'YET_ANOTHER_NESTED_KEY': 'Yet Another Nested Value'
    }
  },
  'ARRAY_KEY': [
    {
      'ARRAY_OBJECT_KEY': 'Array Object Value'
    },
    'array-value'
  ],
  'so_that': 'never'
};

console.log(convertKeysToCamelCase(testObj));

当然,这里的 toCamelCase 其实并不完善,在这里只是做一个示例。其它的格式几乎也是一致的。

其实这里主要不是想说怎么来实现这个方法,想说的是另一个话题,什么呢?可以看到,我们上面是用的 递归 的方式来遍历整个对象,那么想问是否还有其它的方式呢?

哈哈,想不到了吧,我一开始也没想到,有一个简单的办法,那就是序列化后直接正则。哈哈!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangpaopao0609

看星空看日落不如看我的眼眸

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值