首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >你的 AI 每次用不同的变量名——命名一致性的三个锚点

你的 AI 每次用不同的变量名——命名一致性的三个锚点

原创
作者头像
用户12475538
发布2026-05-11 13:13:14
发布2026-05-11 13:13:14
1050
举报
文章被收录于专栏:与workbuddy合作与workbuddy合作

你的 AI 每次用不同的变量名——命名一致性的三个锚点

上个月你让它写的函数叫 get_user_data,这个月它写的叫 fetchUser。不是你要求不一致——是你没建立"命名的肌肉记忆"。


AI 的命名像天气预报——每次不一样

用 AI 编程助手最恼人的瞬间之一:同一个项目、同一个功能、同一个开发者,AI 每次生成的命名风格都不同。

代码语言:python
复制
# 上个月 AI 写的
def get_user_data(user_id):
    user_profile = db.query(User).filter_by(id=user_id).first()
    return user_profile

# 这个月 AI 写的
def fetchUser(userId):
    profile = db.query(User).filter_by(id=userId).first()
    return profile

不是功能有问题——是名的失配让代码库变成混搭风格的衣服。 每一块单独看都没问题,拼在一起时它的注意力全花在"这叫 user_profile 还是 profile"的转换上。


锚点一:建立"命名清单"而非"命名规范"

规范为什么失效

大多数人的做法:写一份命名规范文档。"函数用小写加下划线"、"类用大驼峰"、"常量全大写"。

这份文档 AI 读了。然后它写 get_user_datauser_profile——都符合规范,但它们不在同一层

get_user_data 是动作,user_profile 是实体。规范管了格式,没管语义。

清单为什么有效

代码语言:python
复制
# ❌ 命名规范(告诉 AI 格式,没告诉含义)
函数用 snake_case
变量用 snake_case
类用 PascalCase

# ✅ 命名清单(告诉 AI 具体用什么)
## 用户模块命名清单
函数:
  - get_user(id)      # 获取单个用户
  - list_users(filters) # 获取用户列表
  - create_user(data)  # 创建用户
  - update_user(id, data) # 更新用户
  - delete_user(id)    # 删除用户

变量:
  - user               # 单个用户对象
  - users              # 用户列表
  - user_input         # 用户输入(未处理)
  - user_data          # 用户数据(已处理)
  - user_id            # 用户 ID
  - user_email         # 用户邮箱

永远不要用:
  - fetchUser, getUserProfile(camelCase)
  - usr, u(缩写)
  - profile(用 user_profile)

清单不是"规则",是"字典"。 AI 不需要理解为什么这样命名——它只需要在生成代码时查字典,查到就用,没查到就问你。

怎么维护

代码语言:python
复制
# 每新增一个模块,花 3 分钟补充命名清单
# 不是提前设计所有命名——是做一点补一点

# 模块:订单
新增函数:place_order, cancel_order, refund_order
新增变量:order, order_items, order_status
# 就这样,不需要完整规划,用到再补

锚点二:在代码中放"命名标杆"

只靠文档不够

AI 大概率会读你的命名文档。但它在生成代码时,更直接的参考是项目里已有的代码

如果在项目里已经有一个文件用 get_user_data,AI 在看这个文件后生成新代码时,自然会倾向用 get_user_data 而不是 fetchUser

这就是"命名标杆":项目中的某个文件或模块,作为 AI 的风格参考源。

代码语言:python
复制
# 在项目根目录放一个 NAMING_EXAMPLE.py
# 这个文件不参与运行,纯粹作为风格参考

# NAMING_EXAMPLE.py
# 注意:这个文件不是用来执行的,是给 AI 看命名风格的

def get_user(user_id: int) -> dict:
    """获取单个用户"""
    user = db.query(User).filter_by(id=user_id).first()
    return user

def list_users(page: int, per_page: int) -> list:
    """分页获取用户列表"""
    users = db.query(User).offset((page - 1) * per_page).limit(per_page)
    return users

# ↑ AI 看到这些后生成的代码会自然用 get_xxx, list_xxx 模式
#    而不是 fetchXxx / getXxxList 之类的混搭

操作上非常简单

每次让 AI 写新模块前,加一行:

代码语言:markdown
复制
命名风格参照 NAMING_EXAMPLE.py。如果 NAMING_EXAMPLE.py 中没有对应的命名模式,请先问我。

一行指令,搞定整个模块的命名一致性。


锚点三:驯服 AI 的"命名创新欲"

AI 有时候会给你惊喜——用一个更"优雅"的名字替代你清单里的名字。

代码语言:python
复制
# 你的清单里
用户输入变量:user_input

# AI 写代码时觉得
user_payload  # 更专业
payload       # 更简洁

这种"创新"有两种情况:

  • 它确实更好(user_payload 在你的场景下确实比 user_input 更准确)
  • 它只是不同(payload 比 user_input 短了 5 个字符,没什么实质性区别)

第二种情况是命名一致性的头号杀手。

处理策略

代码语言:python
复制
# 给 AI 一条硬规则
## 命名策略
1. 清单已有的名字,直接用。不允许"优化"或"简写"。
   原因:一致性的价值 > 单个名字的优雅度。

2. 如果你认为清单中的名字确实不合适:
   → 先在回答中说明理由
   → 等我确认后再改
   → 确认后,同步更新命名清单

3. 清单中没有的名字:
   → 参照 NAMING_EXAMPLE.py 的风格
   → 如果仍不确定,问我

关键在第一条:清单已有的名字,"不允许优化"。 这挡住了 AI 最大的命名问题源——在毫无必要的情况下"换个更好的名字"。


命名一致性的 ROI

花在命名一致性上的时间看起来是"非功能性的"——不产生新功能,不修复 bug。

但它在三个维度上产生真实回报:

代码语言:python
复制
# 1. 阅读成本
# 一个命名一致的代码库,AI 每次新对话进入状态的速度快 3-5 倍
# 不需要"翻译"不同的命名风格

# 2. 重构成本
# 你想把 user_profile 重命名为 user_data
# 如果全项目用的都是 user_profile → 一次 grep + 批量替换
# 如果有 userProfile / profile / usr_prof / user_info → 六次 grep + 手动判断

# 3. AI 代码质量
# 当 AI 只看到一种命名模式时,它生成的代码更准确
# 当它看到三四种混搭时,它会混搭着用——结果就是更多的混搭

从今天开始的三件事

代码语言:markdown
复制
1. 给当前项目写一份"命名清单"(不是规范,是字典)
   → 先只写核心模块(用户、订单、商品),10 分钟够

2. 建一个 NAMING_EXAMPLE.py
   → 放 3-5 个关键函数的签名,就够了

3. 在 SOUL.md 里加一条:
   → "清单已有的名字,直接用。不允许优化或简写。"

命名一致性的秘密:不是靠 AI 记住你的风格——是靠你的"字典 + 标杆 + 禁止创新"三板斧,让 AI 每次生成代码时只有一个选择。


本文所有示例均已脱敏处理。你的项目里,getUserData 和 fetch_user_info 在同一个文件里共存吗?欢迎评论区坦白。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 你的 AI 每次用不同的变量名——命名一致性的三个锚点
    • AI 的命名像天气预报——每次不一样
    • 锚点一:建立"命名清单"而非"命名规范"
      • 规范为什么失效
      • 清单为什么有效
      • 怎么维护
    • 锚点二:在代码中放"命名标杆"
      • 只靠文档不够
      • 操作上非常简单
    • 锚点三:驯服 AI 的"命名创新欲"
      • 处理策略
    • 命名一致性的 ROI
    • 从今天开始的三件事
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档