简单记录一下命名规则

简单记录一下命名规则

在这里插入图片描述

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 其实并不完善,在这里只是做一个示例。其它的格式几乎也是一致的。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/29860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件推荐 caj2pdf

## 推荐内容 用 zotero 管理文献时,不能处理知网 caj 格时,有大佬做了相应的工作并开源了。 今天推荐这两个 GitHub 项目 https://github.com/caj2pdf/caj2pdfhttps://github.com/ElonH/caj2pdf_gui 一是 python 做的 caj 2 pdf 源码,二是结…

005-OSPF基本配置

OSPF基本配置 OSPF (Open Shortest Path First) 是一种链路状态路由协议,它属于内部网关协议(IGP)类别,用于在自治系统(AS)内部路由 IP 数据包。OSPF 通过使用 Dijkstra 算法计算最短路径树来确定到达每个…

Linux之旅: 基础知识点的终极指南

文章目录 1、Linux的目录结构2、ls命令3、管理文件和目录4、linux命令使用细节和技巧5、权限管理基本命令6、搜索命令7、管道符与重定向8、压缩和解压命令9、用户及vim编辑器10、用户和用户组管理一、Linux系统用户账号的基本管理二、Linux系统用户组的管理 1、Linux的目录结构…

【CSS in Depth2精译】1.1.2 行内样式~1.1.3 选择器的优先级

文章目录 1.1.2 行内样式1.1.3 选择器的优先级1.1.3.1 优先级的写法1.1.3.2 关于优先级的思考 1.1.2 行内样式 如果无法通过样式表来源规则解决样式冲突,浏览器则会考察它们是否通过 行内样式 作用于该元素。当使用 HTML 的 style 属性声明样式时,该样式…

js-promise、async/await

promise,简单就就是回调的一种简化了回调地狱(如果多个调用是异步并且有结果依赖,那么就需要写成回调)。 async/await,需要成对使用,是对promise的更高级的抽象, 比如 runAsync1() .then(fun…

Win32编程:第一个窗口程序(Part.1)

Win32系统编程是指在Windows操作系统上使用Win32 API进行软件开发的过程;Win32 API是Windows操作系统提供的应用程序接口,允许程序与操作系统进行交互,实现各种功能。 以下是Win32系统编程的基本概念和步骤: 环境准备 开发工具&…

[python学习]--模块管理

在Python中,模块管理是非常重要的,因为它允许你将代码组织成可重用的单元,这些单元可以在其他Python脚本或项目中导入和使用。Python的模块管理包括创建模块、导入模块、使用包(packages)来组织模块,以及处…

element-plus的form表单组件之checkbox组件

单个checkbox 绑定的响应式的值类型为bool类型,同一个组的checkbox多选其值对应值的数组,类型根据checkbox的value值而来。 label只用来显示具体的值,根据value属性来设置。 element-plus的checkbox提供多种特性。 如单选,多选…

关机充电动画:流程与定制

关机充电动画:流程与定制 基于MTK平台Android 11分析 生成logo.bin 关机充电动画是由一系列的bmp图片组成的,这些图片资源存在于vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo目录下(当然不仅保护关机充电动画&#xff0c…

【软件工程】【22.10】p2

关键字: 软件开发基本途径、初始需求发现技术、UML表达事物之间关系、RUP需求获取基本步骤、项目过程建立涉及工作、项目规划过程域的意图和专用目标 判定表、分支覆盖、条件覆盖 三、简答 四、应用 这里条件覆盖有待商榷

Angular 2 数据显示

Angular 2 数据显示 Angular 2 是一个由 Google 维护的开源前端 web 框架,用于构建单页应用程序(SPA)。它以其高效的数据绑定、组件化架构和强大的依赖注入功能而受到开发者的青睐。在 Angular 2 应用程序中,数据显示是核心功能之一,它允许开发者轻松地将数据从组件传递到…

Gone框架介绍28 - 使用goner.IsDefault 将Goner设置为接口的默认实现

gone是可以高效开发Web服务的Golang依赖注入框架 github地址:https://github.com/gone-io/gone 文档地址:https://goner.fun/zh/ 文章目录 使用goner.IsDefault(...)将Goner设置为接口的默认实现从内置组件goner/logrus的构造函数讲起按类型注入的歧义性…

分布式注册中心如何保证数据一致性

分布式注册中心保证数据一致性主要依赖于一些核心的设计原则、技术和策略。以下是一些关键的方法和步骤: 1、使用分布式协调服务 如ZooKeeper、Etcd等,这些服务提供了分布式锁、分布式配置管理等功能,非常适合作为注册中心的数据存储。它们…

Python uWSGI 安装配置

Python uWSGI 安装配置 1. 引言 uWSGI是一个高性能的HTTP服务器,它实现了WSGI、uwsgi和HTTP等协议。它是用C编写的,旨在提供高性能和低资源消耗的Web服务。uWSGI广泛应用于Python Web应用程序,如Django、Flask等。本文将介绍如何在Python环境中安装和配置uWSGI。 2. 安装…

openEuler2203SP1自定义镜像,ks自动化安装

需求: 1、legacy启动 2、/boot分区1G,剩余给/ 3、创建root密码和一个普通用户 4、最小化安装(选上development、legacy-unix、security-tools、standard) 5、关闭firewalld、selinux 6、增加安装vim、ntpdate、iptables、ex…

SpringBoot配置第三方专业缓存技术jetcache方法缓存方案

jetcache方法缓存 我们可以给每个方法配置缓存方案 JetCache 是一个基于 Java 的缓存库,支持多种缓存方案和缓存策略,主要用于提升应用程序的性能和响应速度。它提供了多种缓存模式和特性,可以根据需求选择合适的缓存方案。 JetCache 的主…

认识QML

为什么使用Qt Quick? Qt4的设计用于满足开发者在主流桌面操作系统上有一套表现一致的窗口组件可以 使用。如今Qt的使用者面临了新的问题,他们需要提供可触碰交互的用户界面以满 足软件界面需求,并在主流桌面操作系统和移动操作系统上实现这些…

问题解决:局域网下多台电脑实现共享打印机

看了很多篇解决措施,都没有解决,自己鼓弄了好久,终于解决了,如下步骤所示,实测好用。 首先先保证本电脑已打开网络共享 其次关闭防火墙(有时会出现奇怪问题,最好关闭) 接着访问IP…

Scikit-Learn支持向量机回归

Scikit-Learn支持向量机回归 1、支持向量机回归1.1、最大间隔与SVM的分类1.2、软间隔最大化1.3、支持向量机回归1.4、支持向量机回归的优缺点2、Scikit-Learn支持向量机回归2.1、Scikit-Learn支持向量机回归API2.2、支持向量机回归初体验2.3、支持向量机回归实践(加州房价预测…

TikTok账号养号的流程分享

对于很多刚开始运营TikTok的新手小白来说,都会有一个同样的疑问,那就是:TikTok到底需不需要养号?这里明确告诉大家是需要养号的,今天就把我自己实操过的养号经验和策略总结出来,分享给大家。 一、什么是Ti…