简单记录一下命名规则
1. 记录一下
在编程中,命名规则(也称为命名约定)是非常重要的,它可以帮助我们编写出更易于理解和维护的代码。一直记不住到底有哪些,稍微记一下!
以下是一些常见的命名规则:
-
驼峰命名法(Camel Case)
每个单词的首字母大写,除了第一个单词。例如:
firstName
。 -
帕斯卡命名法(Pascal Case)
每个单词的首字母都大写。例如:
FirstName
。 -
下划线命名法(Snake Case)
单词之间用下划线连接,所有字母都小写。例如:
first_name
。 -
短划线命名法(Kebab Case)
单词之间用短划线连接,所有字母都小写。例如:
first-name
。 -
大写命名法(Upper Case)
所有字母都大写,单词之间可以用下划线连接。例如:
FIRST_NAME
-
小写命名法(Lower Case)
所有字母都小写,单词之间可以用下划线连接。例如:
first_name
。
以上是一些常见的命名规则,但具体使用哪种规则,往往取决于编程语言的习惯和团队的约定。
无论使用哪种命名规则,最重要的是保持一致性。在一个项目中,所有的命名都应该遵循同一种规则,这样可以使代码更易于阅读和理解。
2. 一个有趣的东西
写到这里突然想到一个蛮有趣的东西,就是给你一个对象,怎样将对象的 key 转化为上述的各个命名方式。当然,这个对象是未知的,key 也可能是各种形式,first-name
、firstName
或者 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
其实并不完善,在这里只是做一个示例。其它的格式几乎也是一致的。
其实这里主要不是想说怎么来实现这个方法,想说的是另一个话题,什么呢?可以看到,我们上面是用的 递归 的方式来遍历整个对象,那么想问是否还有其它的方式呢?
哈哈,想不到了吧,我一开始也没想到,有一个简单的办法,那就是序列化后直接正则。哈哈!