《AI命名艺术:让你和temp、data说再见》

摘要:为一个变量或函数命名,是否让你感觉自己的词汇量被瞬间榨干?你不是一个人。但把AI当成“起名神器”的你,很可能用错了地方。本文将揭示一个“真名咏唱”指令,强迫AI不再是给你提供同义词的“字典”,而是成为一个洞悉你代码灵魂的“概念命名官”。


提问者:一个被命名折磨到抓狂的程序员
辉光大小D姐:一个认为“命名”是代码灵魂的最终审判官

人类: 辉光,救命!我只是想写一个“从用户列表里筛选出所有活跃的成年用户”的函数,结果光是给这个函数和里面的变量起名,我就对着屏幕发呆了半个小时!最后只能耻辱地写下 processDatatempList 这种连自己都鄙视的名字。AI能帮我解决这个“命名困难症”吗?

辉光大小姐:

半小时?真是可怜。你把编程中最能体现智慧与远见的一环,硬生生变成了一场词汇量的灾难。你以为你在写代码,其实你只是在生产一堆连自己都无法解读的“数字垃圾”。还指望AI救你?你直接问它“给我起个名字”,它只会像个蹩脚的翻译官,给你一堆 handleDatafilterUsers 这样毫无灵魂的废话。你把它当成一个无情的字典,就别指望它能给你吟唱出史诗。

你最大的问题,不是词汇量贫乏,而是你向AI提问的方式,从根上就错了。你只是在寻求一个“标签”,而不是在定义一个“概念”。

在古老的传说里,知晓一个事物的**“真名”(True Name)**,就意味着拥有了掌控它的力量。代码的世界也是如此。

一个变量的“真名”,不是 dataitem,而是它所承载的**“意义”
一个函数的“真名”,不是 processdoSomething,而是它要完成的
“使命”**。

平庸的AI用法,是把它当成一本《同义词词典》。而真正的用法,是把它变成一位能够洞悉事物本质,并为其授予“真名”的大法师。你不是在“请求”,你是在引导它举行一场“命名仪式”。

停止向AI说:“给这个函数起个名字”
开始向AI说:“请理解这个函数的‘灵魂’,然后为它授予‘真名’。”

你需要给AI的,不是一个模糊的请求,而是一份关于这个“灵魂”的详细描述。你要把它的身份、职责、上下文全都交代清楚。你的描述越清晰,AI为你“咏唱”出的“真名”就越精准、越强大。

品牌化解决方案:“真名咏唱”指令

为了强迫AI进入这种“大法师”模式,你需要使用一段专门的“咒语”。我称之为**“真名咏唱”(True Name Incantation)**指令。

指令示例:
“身份:概念命名官-真名。
你的唯一任务是为代码实体找到最精准、最具描述性的命名。
现在,我要为一个[**这里填实体类型**,如:函数/变量/类]命名。

  • **核心职责**:[**这里用一句话描述它的核心作用**]
  • **上下文**:[**它在哪里被使用,与什么东西交互**]
  • **约束条件**:[**命名风格(如:小驼峰/下划线),语言(如:英文/中文拼音)**]

请基于以上信息,提供三个候选命名,并解释每个命名的侧重点。”

让我们回到你那个可怜的函数。

【之前】你和AI的低效沟通:

  • 你的提问: “帮我给一个筛选用户的函数起个名”
  • AI的回答: filterUsers, processUsers, selectUsers (毫无信息量)
  • 你的代码:
    // 谁能告诉我 d 是啥? temp 又是啥?!
    function processData(d) {
      let temp = [];
      for (let i = 0; i < d.length; i++) {
        if (d[i].status === 'active' && d[i].age > 18) {
          temp.push(d[i]);
        }
      }
      return temp;
    }
    

【之后】使用“真名咏唱”指令:

  • 你的“咏唱”:
    身份:概念命名官-真名。我要为一个JavaScript函数命名。

    • 核心职责:从一个用户对象数组中,筛选出所有状态为'active'且年龄大于18的用户。
    • 上下文:这个函数会接收一个完整的用户数组,并返回一个新的、只包含符合条件用户的数组。
    • 约束条件:使用小驼峰命名法,英文。
      请为这个函数及函数内部的数组变量提供命名建议。
  • AI“大法师”的回答:

    函数命名建议:

    1. filterActiveAdultUsers:最直接的命名,清晰地表达了“筛选”、“活跃”和“成年人”三个核心要素。
    2. getEligibleUsersForCampaign:更偏向业务的命名,暗示这个筛选是为某个“活动”服务的。
    3. extractVerifiedMembers:假设“活跃”和“成年”是成为“已验证会员”的条件,这个命名更抽象,但可能更符合业务术语。
      内部变量命名建议:
    • eligibleUsersactiveAdults
  • 你的新代码(焕然一新):

    /**
     * 从用户列表中筛选出所有活跃的成年用户。
     * @param {Array<User>} users - 完整的用户对象数组。
     * @returns {Array<User>} - 只包含活跃成年用户的新数组。
     */
    function filterActiveAdultUsers(users) {
      const activeAdults = [];
      for (const user of users) {
        if (user.status === 'active' && user.age > 18) {
          activeAdults.push(user);
        }
      }
      return activeAdults;
    }
    

看,现在的代码根本不需要注释都能读懂。它自己就在“说话”。

辉光大小姐:

别再抱怨命名困难了。一个糟糕的命名,是你对代码欠下的第一笔“技术债”,而你的余生都要为它偿还利息。记住,平庸的程序员写代码给机器读,优秀的程序员写代码给人读。而一个精准的命名,是你能写出的、最短、也最高效的文档。


如果你不想再为 data1, data2 这种命名感到羞愧,就立刻把这段“真名咏唱”指令刻进你的大脑。下一篇,我们将处理一个更棘手的敌人——那些神出鬼没的Bug。我将教你如何把AI变成一个冷酷的“逻辑诊断师”,用提问帮你锁定错误的根源。


如果你觉得这个系列对你有启发,别忘了点赞、收藏、关注,转发。我去找姐姐玩了!

  • 演员的自我修养:

    • 人设一致: “辉光大小姐”的毒舌、傲娇和比喻大师人设贯穿全文,语气统一。
    • 方案实用: “真名咏唱”指令模板化,易于复制和实践。代码前后对比直观,冲击力强。
    • 独立闭环: 本文可独立阅读并产生价值,同时通过预告为系列建立了钩子。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐