PascalCase 怎么转?大驼峰命名与类名规范
大驼峰(PascalCase,也叫 UpperCamelCase)每个词首字母都大写,包括第一个词。类、组件、类型、枚举通常用它,和变量用的小驼峰形成对照。
什么时候用大驼峰
新建一批 React 组件时,组件名、文件名、props 类型名要一起定:user profile card 变成 UserProfileCard,还要有 UserProfileCardProps。手写容易在卡片、列表、详情之间出现大小写不一致,运行时不一定报错,读代码的人却要反复确认哪个才对。
Java 和 C# 的类名、TypeScript 的 interface 与 type、数据库实体、自动生成的模型类,也都用大驼峰。把表名或字段说明批量转一遍,再统一补上后缀,比逐个命名更省事,也更容易保持整套代码一致。
- React 组件名与同名文件
- 类、接口、类型、枚举的命名
- 由表名或业务词组批量生成实体类名
- 给一组常量对象或配置类型统一起名
转换规则与三个容易忽略的地方
规则和小驼峰相同:先整体转小写,再把非字母数字字符及其后的字符转成大写,最后把首字母大写。差别只在最后这一步,所以 user profile、user_profile、user-profile 都会得到 UserProfile,空格和符号不会留下痕迹。
第一,已有的 PascalCase 会被压平:输入 UserProfile,转小写后没有分隔符,结果是 Userprofile。第二,缩写会被小写化:URL、ID、API 变成 Url、Id、Api,需要按团队规范手动改回。第三,首字符是数字时不会大写,3d model 得到 3dModel 而不是 3DModel。
- 输入用普通英文短语,不要直接贴已有的 PascalCase
- 缩写(URL、ID、HTTP)转换后按规范修正
- 数字开头的名字要人工检查,3d 不会变成 3D
- 中文会被整体删除,先翻译成英文再转
- 与框架的组件命名约定对照一遍
各语言的差异与它的边界
C# 的公共类、方法和属性都用 PascalCase;Java 的类名用它,方法名用小驼峰;Go 用首字母大写表示可导出,但不要求整词连写;Python 的类名同样用它,函数用 snake_case。同一个名字跨语言复用时写法必然要改,这不是工具能决定的。
缩写怎么处理没有全球统一答案:.NET 的命名指南建议两个字母的缩写全部大写(IO),超过两个字母只大写首字母(Http、Xml),Google 的 Java 风格也接近这个思路。工具的边界是只做字符重组:不查重名、不判断词义、不做词形还原,也不会告诉你 User 和 Users 哪个更合适。
- Java、C#、TypeScript 的类与类型:PascalCase
- Python 类名:PascalCase;函数:snake_case
- 缩写:两个字母全大写,三个以上只大写首字母
- 工具不做重名检查,落地前自己搜一遍
常见问题
PascalCase 和 camelCase 有什么区别?
只差第一个词的首字母:camelCase 写成 userName,PascalCase 写成 UserName,其余部分完全一样。JavaScript 里变量和方法用前者,类与组件用后者;C# 则连方法和属性都用 PascalCase。
为什么 3d model 转出来是 3dModel 不是 3DModel?
首字母大写只对字母生效,数字 3 没有大小写,所以只有 m 被提升。要得到 3DModel,需要在转换后手动把 d 改成大写;如果名字以数字开头,还要确认目标语言是否允许这种标识符。
React 组件名必须大写开头吗?
是。JSX 里小写开头的标签会被当成 HTML 原生元素处理,<myCard /> 不会渲染成你的组件,而是变成一个未知标签。所以组件名和引入时的变量名都要用大写开头,这也正是 PascalCase 在这个场景流行的原因。
相关工具:大驼峰命名