常用代码命名规范

先思考:为什么代码要有命名规范?

  首先代码是写给人看的,然后才给机器执行。其次团队协作间统一语言可以减少沟通成本。同时最重要的是,规范命名便于长期维护代码。核心目的就是让别人(以及未来的你)在最短时间内看懂代码。

1.大驼峰 PascalCase(帕斯卡命名法)

规则:每个单词首字母大写,无分隔符

示例 :UserInfo、OrderService、StudentScoreList

2.小驼峰 camelCase(驼峰命名法)

规则:第一个单词首字母小写,后续单词首字母大写,无分隔符

示例 :userInfo、orderList、getUserById

3. 蛇形命名 snake_case(下划线命名)

规则 :全部小写,单词之间用下划线 _ 分隔

示例 :user_age`、`order_list

4. 大写蛇形 UPPER_SNAKE_CASE(宏命名)

规则 :全部大写,下划线分隔 示例:MAX_PAGE_SIZE、DEFAULT_TIMEOUT

5. 短横线命名 kebab-case(烤串命名)

规则 :全部小写,单词用 - 分隔 示例:user-name、page-header

⚠️ 绝大多数编程语言变量名不能用(减号会被识别成运算符) 适用场景:CSS class、URL、文件名、HTML 属性

6. 匈牙利命名法 Hungarian notation

规则 :变量名前缀增加类型标识,后面接业务名称 示例:strUserName(str = 字符串)、nCount(n = 数字)

现状:现在不推荐,老 C++/Windows 代码多见,现代 IDE 可以直接看类型,冗余。

主流语言推荐命名规范

语言 类 / 类型 变量 函数 / 方法 常量
Java PascalCase camelCase camelCase UPPER_SNAKE_CASE
JavaScript/TS PascalCase camelCase camelCase UPPER_SNAKE_CASE
Python PascalCase(类) snake_case snake_case UPPER_SNAKE_CASE
C# PascalCase camelCase(局部变量) PascalCase(方法) UPPER_SNAKE_CASE
Go PascalCase(导出)/ camelCase(私有) camelCase camelCase UPPER_SNAKE_CASE
SQL snake_case snake_case - UPPER_SNAKE_CASE

⚠️说明:Go 官方没有 camelCase 叫法,公开标识符大驼峰,私有标识符小驼峰。

通用命名原则(不管哪种风格都要遵守)

  1. 见名知意 ,不要单字母无意义命名(除循环 i,j)
  2. 不要拼音混合英文(尽量纯英文)
  3. 不要缩写滥用,通用缩写可以(id、url、ctx)
  4. 命名区分名词 / 动词:变量是名词(user),函数是动词短语(getUser)
  5. 保持项目内风格统一
  6. 布尔变量优先使用 is/has/can/should 前缀;集合、数组变量尽量使用复数形式
  7. 避免冗余重复词汇,少用泛化无意义单词:info、data、model
  8. 特殊缩写驼峰处理:缩写仅首字母大写,如 userId、userUrl,禁止写为 userID、userURL
  9. 函数动词语义明确;拒绝笼统模糊动词,如 handle、process

❌ 反面错误示例(避坑参考)

  1. 无意义命名:a、temp1、dataInfo,无法体现业务含义(循环 i/j 除外)
  2. 中英拼音混合:userXinXi、dingDanList
  3. 过度缩写:usrInf、ordSvc
  4. 语义模糊函数:handleData(),看不出新增、删除、查询逻辑,应改为 saveUserData()
  5. 命名冗余:userInfoModel(类本身就是 Model,无需重复后缀)、orderOrderNo单词重复
  6. 布尔语义模糊:flag、status、isOk;
    • ✅推荐:isEnabled、hasPermission、canSubmit、shouldRefresh
  7. 集合单数命名:用 user 存储数组集合;✅正确写法 userList、orderIds
相关推荐
马优晨1 小时前
JAVA 中 VO 实体类是什么意思,为什么要做这个
java·开发语言·状态模式·java vo·java vo是什么
Baron X2 小时前
Eclipse Temurin 21 (JRE) Alpine 镜像获取、离线导入与推送操作
java·docker·eclipse·temurin
孙浩君2 小时前
我用 Spring Boot + xterm.js 写了个终端风格互动叙事游戏引擎:游戏即文件,上传一个 JSON 就能玩
java
jose2 小时前
URL 里多写了一个端口,为什么请求还能调通?
java·后端
孙浩君2 小时前
我用 Spring Boot 写了个「终端风格模拟经营游戏引擎」:引擎 + JSON 游戏文件,开箱即玩
java
y1su2 小时前
Leetcode 动态规划 模板
java·数据结构·算法·leetcode·动态规划
Wang's Blog3 小时前
Java 项目实战: 交友项目 - JWT 概述:为什么要用 Token 换掉 Session
java·ui·交友
SL_staff3 小时前
低代码选型避坑指南:为什么‘能拖拽’不等于‘能交付’?——基于JVS八大引擎的四维交付能力评估框架
java·低代码·spring cloud
李福春4 小时前
技术思考问题6:技术演讲该晒成功架构,还是交代失败与取舍?
java·开发语言·架构·computer use·深圳同盟·腾讯云架构师技术同盟·反演思维