Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >用Cursor重构Go项目,只需7步!

用Cursor重构Go项目,只需7步!

作者头像
腾讯云开发者
发布于 2025-04-02 01:35:25
发布于 2025-04-02 01:35:25
49201
代码可运行
举报
运行总次数:1
代码可运行

本文主要介绍了如何使用 Cursor 辅助 Go 项目重构,旨在通过人机协作提升代码重构的效率和质量。本文通过房屋翻新的类比,详细阐述了 AI 在代码重构中的各个步骤和作用,并提供了具体的实践指南。

关注腾讯云开发者,一手技术干货提前解锁👇

01、引言:代码重构如同房屋翻新——如何与 AI 协作更高效?

想象一下,你接手了一栋老旧别墅,房屋内布局复杂,线路杂乱,设施老化严重,居住体验糟糕。要将这座房子改造成舒适现代的住所,你可能会怎么做?

首先,你会先找经验丰富的建筑师或装修顾问,整体检查房屋,判断哪些区域存在问题,哪些最急需改造。这类似于我们使用 AI 代码助手快速扫描代码库,识别出冗长、复杂、难以维护的函数和代码结构。

接下来,你会和建筑师讨论具体的改造方案。房屋的墙体能否拆除?房间布局如何更合理?水电线路如何重新布局?同样地,在代码重构时,你需要与 AI 助手共同探讨具体的重构策略,明确采用哪种设计模式,如何优化函数结构。

确定方案之后,建筑师会为你绘制详细的施工图纸,标明施工规则和注意事项。在代码重构中,我们也会让 AI 将讨论结果转化为具体的、结构化的重构规则,形成明确的任务清单。

对于特别复杂的房屋结构,你可能还需要建筑师深入了解房屋的结构和承重情况,确保改造方案安全可靠。对应到复杂的业务逻辑代码,你也会让 AI 更深入地理解和梳理内部逻辑,确保重构方案没有遗漏关键细节。

施工阶段,装修工人根据施工图一步步执行改造任务。但作为房主,你仍需亲自监督施工质量,确认最终效果符合预期。代码重构时,AI 会帮助你完成具体的代码实现、注释和单元测试,但你仍需亲自审核逻辑正确性和测试覆盖情况,保证重构后业务功能正常运行。

完成施工后,建筑师会重新审查一遍改造效果,检查有没有意外的结构问题或安全隐患,确保房屋可以安全入住。同样,重构完成的代码也要由 AI 再次审查一遍,检查接口兼容性、依赖变更、潜在副作用和逻辑回归风险。

最后一步,装修完毕后,你需要整理房屋的新布局图纸和使用说明,以便房屋后续的维护和使用。在重构代码后,AI 会帮助生成代码调用流程图和技术文档,方便团队成员理解和后续维护。

通过以上类比你可以清晰地看到:使用 AI 辅助进行代码重构,就像请到一位经验丰富、高效可靠的建筑师一样。AI 能帮助你快速完成大量机械繁琐的分析和实现任务,而你则专注于全局把控、业务理解和关键决策。这种人机协作方式,能显著提升代码重构的效率和质量,让你的代码库焕然一新,充满活力。

下面,我们就详细介绍如何将这一思路具体运用到 Go 项目的重构实践中。

02、第一步:扫描分析代码

首先使用 AI 辅助扫描代码库,识别需要重构的函数。

参考使用的 prompt:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
请分析下{待分析的代码目录}这个目录下有哪些函数过大、难以维护?请以类似 cursorrule 的格式生成列表,输出到{待分析的代码目录}/.todofunc 文件中。

对于代码量大的情况,可分多次处理:

代码语言:javascript
代码运行次数:1
运行
AI代码解释
复制
请逐个分析下{目录}/{子目录}下的函数,还有哪些需要优化,结果追加到.todofunc文件中即可。

AI 可以帮助:

  • 快速扫描大规模代码库。
  • 识别函数复杂度、长度等结构性问题。
  • 自动生成清晰的待重构函数列表。

人类需要做的判断:

  • 确定扫描范围和优先级。
  • 定义何种代码可归为“难以维护”。
  • 根据业务重要性优先选择需重构的函数。

03、第二步:讨论重构方案

根据 .todofunc 文件,选择需要重构的函数,与 AI 深入讨论具体方案。这一步的关键在于启发式的互动。

可用的交流方式包括:

  • 直接向 AI 咨询重构建议。
  • 请 AI 推荐适合的设计模式。
  • 让 AI 生成函数流程图,以便更清晰地理解逻辑。

讨论时可用到的 prompt 关键词:代码重构设计模式应用

AI 能提供的帮助:

  • 分析函数代码结构和复杂性。
  • 可视化函数逻辑流程。
  • 推荐设计模式和具体重构方式。

人类需要做的判断:

  • 深入理解业务需求和上下文。
  • 评估 AI 提出方案的可行性和合理性。
  • 最终决定采用哪种重构方案与设计模式。

04、第三步:生成具体重构规则

基于讨论结果,让 AI 将方案转化为明确的 cursorrule 规则,更新到 .todofunc 文件中。

示例 prompt(需根据具体讨论情况简短明确给出):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
请根据刚才讨论的方案,为该函数生成 cursorrule 规则,追加到.todofunc文件中。

AI 能提供的帮助:

  • 快速将讨论结果整理成结构化的规则。
  • 自动更新和维护待办任务文件。

人类需要做的判断:

  • 审核规则内容的正确性和实用性。
  • 确保规则符合项目目标。
  • 适当调整规则的优先级。

05、第 3.1 步(可选):复杂业务逻辑深度梳理

对于业务逻辑特别复杂的函数,必要时让 AI 深入分析并梳理其中的业务逻辑,生成明确的分析结果追加到 .todofunc 文件中。

示例 prompt(需简短明确):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
请仔细分析该函数的业务逻辑,整理出核心流程并追加到.todofunc文件中。

AI 能提供的帮助:

  • 提取并梳理复杂函数的核心业务逻辑。
  • 明确逻辑分支和处理路径。

人类需要做的判断:

  • 审核 AI 分析的业务逻辑是否全面准确。
  • 补充可能遗漏的隐性业务规则。
  • 修改 AI 理解有误的部分。

06、第四步:执行代码重构

接下来逐步进行代码重构,可以自上而下或自下而上进行。

重构过程中的注意事项:

  • 明确告知 AI 专注于具体任务,避免不必要的额外工作。
  • 重点核对逻辑实现是否完整。
  • 配合单元测试验证逻辑正确性。
  • 明确要求 AI 提供清晰的人类和 AI 均易理解的注释。

参考 prompt:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{具体重构要求}

额外要求:
1. 为重构后的函数添加详细注释,便于开发者和 AI 理解整体逻辑流程。
2. 不要进行其他额外操作。
3. 若该函数可以编写单元测试,请同时生成单元测试代码,使用 TDD 风格,涵盖基本、特殊和边界场景。

AI 能提供的帮助:

  • 执行具体代码重构工作。
  • 添加易读易理解的代码注释。
  • 自动生成初步单元测试代码。
  • 保持代码风格的一致性。

人类需要做的判断:

  • 核对重构后的实现逻辑是否完整、正确。
  • 审核单元测试是否充分覆盖关键场景。
  • 运行和验证单元测试结果。
  • 确保业务逻辑未受影响。

07、第五步:AI 自我审查

利用 AI 的 @commit 功能,让其审查重构后的代码差异,检查可能存在的问题。

参考 prompt:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@commit 请分析{重构入口函数}及其调用的相关函数在{文件目录/代码范围}内的逻辑是否正确,是否存在问题,尤其关注:
- 接口兼容性是否被破坏
- 隐式依赖是否发生变化
- 是否存在未预期的副作用
- 核心逻辑是否存在回归风险

AI 能提供的帮助:

  • 自动对比代码变更。
  • 快速发现潜在风险和问题。
  • 提供相应的修复建议。

人类需要做的判断:

  • 最终评估代码质量和风险。
  • 决定是否采纳 AI 提出的修复建议。
  • 人工确认业务逻辑的正确性和完整性。

08、第六步:更新技术文档

让 AI 生成重构后的代码调用流程图和重点逻辑说明,更新项目文档。

参考 prompt:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
请以 markdown 格式给出{重构入口函数}的主要流程图,不必细化到具体函数。

AI 能提供的帮助:

  • 自动生成清晰的流程图。
  • 记录重构后的逻辑和设计决策。
  • 更新相关技术文档。

人类需要做的判断:

  • 审核文档内容的准确性。
  • 补充必要的业务上下文说明。
  • 确保文档对团队其他成员有实际帮助。

09、第七步:完整功能验证

最后将代码部署到测试环境,进行全面的业务功能验证。

此步骤中 AI 的作用十分有限。

人类需要做的判断:

  • 部署代码并执行端到端测试。
  • 验证业务功能的完整性和正确性。
  • 观察并评估系统整体性能。
  • 必要时调整和优化重构结果。

10、人机协作的关键要点

AI 辅助的优势

  • 快速分析大量代码。
  • 提供结构化的重构建议。
  • 自动生成单元测试和文档。
  • 提高重构效率和代码质量。

人类判断不可替代之处

  • 深入理解业务需求和上下文。
  • 评估重构对系统整体影响。
  • 识别 AI 无法理解的领域知识。
  • 做出性能和可维护性之间的权衡。
  • 确保核心业务逻辑正确性。
  • 最终把握代码质量和业务方向。

11、实践中的建议

  1. 分清职责: 让 AI 干重复性工作,你来管业务和决策。
  2. 小步前进: 别一次改太多,边改边验证更稳妥。
  3. 保持警惕: AI 很强,但最后还是要靠你把关。
  4. 引导清晰: 给 AI 的指令要具体,别模棱两可。
  5. 学着用: 把 AI 当老师,从它的建议里多学点东西。

通过这样的协作,你既能保证代码质量,又能大幅提升效率,减少技术债务,让代码更好维护。

12、总结

AI 代码助手在重构中越来越重要,尤其是在分析代码、提建议、写测试和更新文档这些方面。不过,理解业务、设计方案、把控质量和最终验证还是得靠人。最好的重构方式是 AI 和人配合:AI 帮你省时间,你来确保结果靠谱。合理用好 AI 工具,能让你更专注在创造性的工作上,最终提升开发的整体效率和质量。

这篇指南希望能帮你在实践中用好 AI,同时保留人工的核心价值。

13、将使用AI辅助的重构融入日常开发工作中的思考

  1. 采用分层次重构策略
    • 日常开发中:持续进行小范围重构(方法提取、变量重命名等)。
    • 功能完成后:进行中等规模重构(类的拆分、设计模式应用等)。
    • 计划性迭代:安排大规模架构级重构。
  2. 将重构正式纳入开发流程
    • 在"完成的定义"(Definition of Done)中包含代码质量和重构要求。
    • 在迭代计划中为重构预留时间。
    • 使用代码静态分析工具自动识别需要重构的区域。
  3. 利用AI辅助提高重构效率
    • 正如文章所述,利用AI快速分析代码结构和依赖。
    • AI生成单元测试,增强重构安全性。
    • 使用AI辅助验证重构前后的代码等价性。
  4. 团队共识与沟通
    • 让团队理解重构的价值和必要性。
    • 向产品负责人清晰沟通重构的意义,获取支持。
    • 形成团队对"何时重构"的共识。

对本文感兴趣的话,也欢迎关注作者本人的公众号了解更多👇

-End-

原创作者|厉辉

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云开发者 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
破解遗留系统重构问题的 6 步心法
本文由极客时间整理自 Thoughtworks DTO Advisory 黄俊彬在 QCon+ 案例研习社的演讲《MV* 模式重构演进(上)》 作者|黄俊彬 编辑|支小亚 你好,我是 Thoughtworks 团队的技术教练黄俊彬,目前主要在智能硬件、通讯互联网、金融等领域企业提供敏捷转型、系统架构改造以及大型遗留系统重构等服务。今天给你分享的话题是 MV 模式的重构演进。 我会从以下四个部分来分享,第一部分给大家分享遗留系统典型特征,介绍这类系统的特征以及对团队的影响。第二部分是MV*模式重构的策略,针
深度学习与Python
2023/03/29
4110
破解遗留系统重构问题的 6 步心法
📝《当AI开始写代码:我们究竟是在进化还是被替代?》
🔋 某智能家居企业实测:设备固件开发周期从14天缩短至9天,但OTA升级策略仍需人工设计
Jimaks
2025/03/19
1730
代码重构之道
导语 最近看到有同学提问:“代码重构有意义吗?”,“关于代码重构有什么好的方法论吗?”,个人对代码重构非常感兴趣,在13年就开发接触代码重构的概念,学习相关理论方法,一直在坚持实践,现在基本已养成一种习惯了,所以周末系统梳理了重构原理、相关概念和操作技巧,抛砖引玉,跟大家分享交流。 什么是重构? Refactoring是对软件内部结构的一种调整,目的是在不改变外部行为的前提下,提高其可理解性,降低其修改成本。 为什么重构? 1.改进软件的设计 《重构》里有一段话非常有启发性:“一开始我所做的重构都像这样停
QQ音乐前端团队
2020/07/21
1.2K0
代码重构(六):代码重构完整案例
无论做什么事情呢,都要善始善终呢。前边连续发表了5篇关于重构的博客,其中分门别类的介绍了一些重构手法。今天的这篇博客就使用一个完整的示例来总结一下之前的重构规则,也算给之前的关于重构的博客画一个句号。今天的示例借鉴于《重构,改善既有代码的设计》这本书中的第一章的示例,在其基础上做了一些修改。今天博客从头到尾就是一个完整的重构过程。首先会给出需要重构的代码,然后对其进行分析,然后对症下药,使用之前我们分享的重构规则对其进行一步步的重构。 先来聊一下该示例的使用场景(如果你有重构这本书的话,可以参加第一章中的示
lizelu
2018/01/11
2K0
代码重构(六):代码重构完整案例
软件工程—思考项目开发那些事(一)
本文阐述了技术人如何从技术走向管理,分享了若干心得和体会,包括需要不断学习、储备知识、掌握核心技术、培养团队、关注业务、理解客户、善于沟通、学会管理、提升领导力、关注个人成长、保持激情、做好榜样、承担责任、保持谦逊、正视失败、保持好奇心、培养创新意识等方面。同时,文章也提醒技术人,要做领导者而不是管理者,要关注业务发展和客户体验,以结果为导向。在技术走向管理的道路上,技术人需要不断学习和实践,以提升自己的管理能力,更好地为团队和公司的业务服务。
王清培
2018/01/05
1.3K0
软件工程—思考项目开发那些事(一)
代码重构的艺术
所谓重构是这样一个过程:在不改变代码外在行为的前提下,对源代码做出修改,以改进程序的内部结构,从而使代码变得易于理解,可维护和可扩展。本质上来说重构就是在代码写好之后改进它的设计。
coder_koala
2020/12/17
8480
代码重构的艺术
代码重构策略
1.添加新功能前:在添加新功能之前,如果发现现有的代码结构不够清晰或者设计不合理,那么进行重构可以帮助更好地实现新功能,并减少潜在的问题。
一个风轻云淡
2024/06/15
2140
单元测试的入门实践与应用
单元测试的目的是验证代码中最小的可测试单元(通常为函数或方法)是否按预期运行。它应当独立于系统的其他部分,并专注于特定的功能。
努力的小雨
2024/09/04
1551
高质量代码究竟依赖设计还是重构而来?
一个有所追求的程序员一定都希望自己能够写出高质量的代码,但高质量代码从何而来呢?有人认为是设计出来的,就像一栋稳固的大厦,如果没有前期优秀的设计那么肯定难逃豆腐渣工程的命运;也有人认为是重构出来的,软件的一个基本特性就是易变,随着时间的推移软件会不断腐化,因此需要不断重构来保持代码的高质量。哪种说法更有道理?今天就跟大家聊一聊重构、设计与高质量代码的关系。欢迎阅读。
腾讯云开发者
2023/08/03
2730
高质量代码究竟依赖设计还是重构而来?
重构
说到重构,我们再来了解一下定义:重构是一种对软件内部结构的改善,目的是在不改变软件的可见行为的情况下,利用设计思想、设计原则、设计模式编程规范等理论来优化代码。使其更易理解 (可读性),修改成本更低(可维护性),提升代码质量。
只喝牛奶的杀手
2023/09/18
2480
重构
如何进行有效的单元测试:提升软件质量的关键步骤
在现代软件开发的复杂生态系统中,单元测试犹如一座坚实的基石,对确保软件质量起着不可或缺的作用。随着软件项目规模的不断扩大和需求的日益复杂,单元测试的重要性愈发凸显。
Front_Yue
2024/12/29
1350
如何进行有效的单元测试:提升软件质量的关键步骤
干货 | 携程微服务架构下的测试浅谈
施赛花,携程机票BU测试工程师,主要负责携程机票聚合层服务的测试,以及自动化工具的开发。善于研究新技术,并转用于实践,提升测试工作效率。
携程技术
2019/04/22
5670
干货 | 携程微服务架构下的测试浅谈
面向对象、设计原则、设计模式、编程规范、重构,这五者有何关系?
现在,主流的编程范式或者是编程风格有三种,它们分别是面向过程、面向对象和函数式编程。面向对象这种编程风格又是这其中最主流的。现在比较流行的编程语言大部分都是面向对象编程语言。大部分项目也都是基于面向对象编程风格开发的。面向对象编程因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式编码实现的基础。
码农架构
2021/01/19
7080
高质量代码究竟依赖设计还是重构而来?
一个有所追求的程序员一定都希望自己能够写出高质量的代码,但高质量代码从何而来呢?有人认为是设计出来的,就像一栋稳固的大厦,如果没有前期优秀的设计那么肯定难逃豆腐渣工程的命运;也有人认为是重构出来的,软件的一个基本特性就是易变,随着时间的推移软件会不断腐化,因此需要不断重构来保持代码的高质量。哪种说法更有道理?今天就跟大家聊一聊重构、设计与高质量代码的关系。欢迎阅读。
腾讯云 CODING
2023/08/03
2230
高质量代码究竟依赖设计还是重构而来?
《提升 C++代码可维护性的关键指标与策略》
在当今的软件开发领域,C++作为一种广泛应用的编程语言,其代码的可维护性至关重要。可维护性高的代码不仅能够降低开发成本,还能提高软件的质量和可靠性,延长软件的生命周期。那么,怎样提高 C++代码的可维护性呢?关键在于明确可维护性指标,并采取相应的策略来实现这些指标。
程序员阿伟
2024/12/09
1080
开发高质量软件的5大原则
多少次的惨痛教训告诉我们,在软件应用发布维护版本或者补丁之前,应该避免使用其最新版本。虽然每个人都知道初始发布版本V和稳定发布版本V.n之间存在软件质量鸿沟,这个问题却一直没有得到解决。 本文将会讨论5个具有可操作性的原则,以帮助开发团队跨越质量鸿沟 1. 使用代码覆盖率反映测试完整性 软件测试的目的都是为了保证软件能在最终用户使用时是正常运行的。然而,软件测试面临着挑战,如何保证测试的完整性?很多开发组织会制定测试规程去匹配需求文档或者用户文档。这种测试方法可以验证正常操作路径,但是测试边界、错误场景都无
DevOps时代
2018/02/02
2.2K0
开发高质量软件的5大原则
《大型 C++项目的代码组织与架构设计秘籍》
在当今的软件开发领域,C++仍然是一种强大且广泛应用的编程语言,尤其在大型项目中,其性能和灵活性优势更为突出。然而,大型 C++项目的复杂性也给开发者带来了巨大的挑战,如何进行有效的代码组织和架构设计成为了关键问题。一个良好的代码组织和架构设计不仅能够提高项目的开发效率、降低维护成本,还能增强项目的可扩展性、可维护性和可靠性。
程序员阿伟
2024/12/09
4780
我用这10招,能减少了80%的BUG
并且idea还有自动补全的功能,可以有效减少我们在日常开发的过程中,有些单词手动输入的时候敲错的情况发生。
苏三说技术
2024/04/17
4830
我用这10招,能减少了80%的BUG
豆瓣 9.1!二刷了这本经典,YYDS
前段时间重读了《重构:改善代码既有设计》[1],收货颇多。于是,简单写了一篇文章来聊聊我对重构的看法。
Guide哥
2022/04/11
3950
豆瓣 9.1!二刷了这本经典,YYDS
单元测试:提高Go语言开发的质量和效率
在讲解单元测试的好处之前,我们先来理解一下什么是单元测试。单元测试,顾名思义,是对代码中的最小可测试单元进行验证的测试方法。这些单元通常是函数、方法或者类。在Go语言中,我们通常对一个函数或者一个方法进行单元测试。
运维开发王义杰
2023/08/10
1770
单元测试:提高Go语言开发的质量和效率
相关推荐
破解遗留系统重构问题的 6 步心法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验