你只管写,我来改:插件的下个版本将自动优化烂命名

89 阅读4分钟

大家好,还是我,那个不想为命名烦恼的全栈小弟。

上一篇关于【命名插件 Easy Naming】的文章发布后,我收到了一些意见,真的非常感谢大家!在众多评论和私信中,有一位同学的反馈。

他是这么说的(大意如此):

“如果我已经能用准确的中文描述出变量的意义,比如‘用户信息列表’,那我八成也知道该把它命名成 userInfoList 了。我真正的痛点是,有时候思路来了,我根本不想去想中文叫啥,只想随便用个 datalisttemp 先把逻辑跑通再说!”

插件地址:plugins.jetbrains.com/plugin/2760…

在线版本地址: www.icanshock.fun/

image.png

一语惊醒梦中人!

这位同学说的太对了。我们开发时,最高效的状态是“心流”(Flow State)。在这个状态下,我们的思绪完全沉浸在业务逻辑和算法实现上。任何中断,包括去想一个变量到底该叫“用户表”还是“用户信息表”,都是一种干扰。

于是,我们写下了无数的 tempMap, dataList, flag, res,甚至是 shuju (数据)、liebiao (列表) 这样的拼音命名。

逻辑是通了,功能是实现了,但一回头,代码里埋下了一堆“命名债”。这些“只有当时的自己”才能看懂的命名,成了日后维护的噩梦。

新的挑战:从“翻译官”到“智能美化师”

我意识到,我之前做的“命名神器”,更多扮演的是一个“翻译官”的角色。你给它中文,它给你规范的英文。

但现在,我要让它进化!

我希望它能成为一个“智能代码美化师”。你不再需要给它任何中文提示,你只需要:

把你那段充斥着 abcdatatemp 的代码,大大方方地选中,然后按下一个键。

它会自动分析这段代码的上下文,理解每个变量的用途和类型,然后, “DUANG” 的一下,帮你把所有不规范、不清晰的命名,全部替换成优雅、准确、符合规范的命名,并且绝不修改任何一行代码逻辑!

功能预告:下一代“命名神器”的核心能力——代码块智能重命名

这个激动人心的功能,我已经有了一个清晰的实现思路,并决定在下一个大版本中推出。让我来为你演示一下它的魔力。

想象一下,这是你为了实现功能,“潦草”写下的代码:

Java

// 这是啥方法名?无所谓,先叫 process
public List<String> process(List<Map<String, Object>> list1) {
    List<String> list2 = new ArrayList<>();
    for (Map<String, Object> m : list1) {
        if ("active".equals(m.get("status")) && (Integer)m.get("age") > 18) {
            list2.add((String)m.get("name"));
        }
    }
    return list2;
}

这段代码逻辑没问题,但命名简直是一场灾难:process, list1, list2, m... 过一周连自己都看不懂。

接下来,就是见证奇迹的时刻:

  1. 选中上面整个 process 方法。

  2. 按下“一键智能美化”快捷键。

  3. 插件会通过AST(抽象语法树)解析你的代码,它能“理解”:

    • list1 是一个 Map 组成的列表,Map 里面有 status, age, name 这些 key
    • 这个方法最终返回了一个 String 类型的列表 list2,里面装的是 name
    • 整个逻辑是根据 statusage 进行了过滤。
  4. 基于这些上下文,它会给你一套重命名建议。当你确认后,代码会瞬间“变身”:

Java

// 变身后的代码
public List<String> findActiveAdultUserNames(List<Map<String, Object>> userRecords) {
    List<String> userNames = new ArrayList<>();
    for (Map<String, Object> record : userRecords) {
        if ("active".equals(record.get("status")) && (Integer)record.get("age") > 18) {
            userNames.add((String)record.get("name"));
        }
    }
    return userNames;
}

看到了吗?process 变成了更具业务含义的 findActiveAdultUserNameslist1 变成了 userRecordslist2 变成了 userNames,循环里的 m 也变成了更清晰的 record

整个过程,你只需要负责选中和确认。从此,你可以在开发时尽情挥洒创意,随意命名,然后在提交代码前,一键“美颜”,瞬间让你的代码变得专业、优雅、可读性爆表!

我们正在路上

这个功能目前正在紧锣密鼓地开发中,它将作为 【命名神器 v2.0】 的核心功能,在不久的将来与大家见面。

我的目标,是把这款插件从一个单纯的“命名辅助工具”,升级为一个能真正理解你代码意图的“智能开发伴侣”。

再次感谢社区给我的灵感和动力!也请大家期待一下,一个更强大、更智能的“命名神器”即将到来。

让我们的代码,不仅能正确地运行,更能优雅地被阅读。

—— 一个在为“命名神器”装载AI大脑的全栈小弟