常用代码命名规范

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

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

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
相关推荐
Rain的Java大神之路14 分钟前
公交App上“还有2站,约5分钟”怎么实现?90%的人答错这道大厂面试题:GPS漂移、ETA不准、10万QPS热点读全拆透(附完整代码)
java·后端·面试
golang学习记27 分钟前
IDEA 2026.3 远程开发迎来重磅升级
java·ide·intellij-idea·远程开发
天天被压力1 小时前
【A股分钟级高频数据完全手册 #04】指数分钟级行情数据接口:沪深指数Pro版最新分时取数
java·人工智能·python
敲代码的小小酥1 小时前
谈SpringMVC与Spring WebFlux的区别与适用场景
java·后端·spring
天天被压力1 小时前
【A股分钟级高频数据完全手册 #03】股票历史1分钟K线数据接口怎么用:Pro版批量拉取与本地缓存
java·人工智能·python
apcipot_rain1 小时前
C++转Java日记(02)
java·开发语言·c++
nice_lcj5201 小时前
【从零理解 Spring AI · 03】Spring AI 在 Spring 生态里的位置
java·spring boot·大模型·spring ai·ai应用开发
码农小河6611 小时前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库
风若飞13 小时前
Spring Ai 入门遇到问题1
java·后端·spring
Nuanyt14 小时前
LeetCode Hot 100 链表专题(五)· 2 题(Java)
java·算法·leetcode·链表