一、引言
在这个飞速发展的数字时代,随着AI和人工智能、大模型技术的快速发展,人工智能(AI)已经渗透到我们生活的方方面面,越来越多的行业开始尝试将AI技术应用于实际业务中,而它在软件开发领域的应用,也是得到了很大的效果。目前逐渐有大量的IT开发工程师开始使用各类的AI工具来帮助改善编程体验、提高效率和增加代码质量,将极大地推动了编程行业的进步和创新。
想象一下,每当面对复杂的需求和紧迫的项目截止时间,思考着如何产出以及优化更加优秀的代码。此时,如果有一位经验丰富的编程前辈,能够通过先进的自然语言处理技术,不仅能够精准捕捉理解您的意图和需求,还能提出建设性的意见,甚至在您敲击键盘的同时,自动生成符合需求的代码,这无疑是帮助程序员更高效地工作。
今天给大家推荐一款由腾讯云自研的一款编程提效辅助工具,以插件形式安装到编辑器(VS Code 或者 JetBrains 系列 IDE)中辅助编程;可提供“自动补全代码”、“ 根据注释生成代码”、“ 代码解释”、“ 生成测试代码”、“ 转换代码语言”、“ 技术对话”等能力。
BAT公司腾讯出品的“腾讯云 AI 代码助手”,是基于腾讯混元助手大模型,结合腾讯积累多年的编程现场大数据和外部优秀开源数据,为你生成更符合实际研发场景的优质代码,提升编码效率,释放“十倍”软件生产力。
“千呼万唤始出来,犹抱琵琶半遮面。”,接下来本文将从0到1深入探讨AI工具(“腾讯云 AI 代码助手”)在实际的开发编程中的应用,并提供最佳的实践方案。
二、思考传统团队开发模式下会存在哪此痛点呢?
首先,我们在了解“腾讯云 AI 代码助手”之前,可以先来聊聊在以前开发的模式下有哪些开发的痛点,古话有一句成语“知己知彼,百战不殆”,“磨刀不如砍柴工”,只有我们充分的了解传统开发模式下有哪些业务痛点,通过对比2种模式的差异,才能事半功倍。
当然,我推荐觉得2种模式相辅相成,才能发挥更大的收益,并不是希望人工智能产品取代软件开发人员,而是更希望它们能够显著提高生产力,并让开发人员能够专注于更复杂的问题。
2.1 痛点1 – 编码效率低下:
在以往的传统的软件开发过程中,大部分的编码都是由开发人员手动编写代码,要么就是copy代码改改,疲惫的应对于大量的业务场景代码开发中,而这样的代码的编写和调试需要耗费大量的时间和精力。
相信大家都看过以下这个搞笑的视屏,描述的是一位新手程序员在开发过程中,发现了一个小Bug,四下查看,发现没人后,想着表现一下,就顺手解决了这个Bug,没想到导致整个雕塑全部垮掉了。
同理,在现实的开发过程中也是会经常存在同样的这些问题,往往出现一个Bug时,需要多个项目组、多个团队联合起来一起排查,特别是微服务的场景,记得有一次小程序中有一个订单状态没有同步,几个重要的服务的同事都需要打日志逐一排查,最后才把问题解决完,从开发、测试、运维整个链路的过程中,花费了相当长的一段时间来解决这个问题,效率非常的低效。
2.2 痛点2 - 代码质量参差不齐,新手很容易写出隐藏Bug:
不同开发人员的编码风格和水平存在,在公司也是存在不同的级称(初级、中级、高级、架构师),手动编写代码很容易出错,且解决方案不一致,导致代码质量也不一样,新手容易出现各种Bug或者考虑不全的情况,而且给公司带来很多的额外的支出成本,比如项目需要重构、项目线上经常出事故。
在我工作的5-6年的过程中,经历过的公司(有大厂、有创业公司、有小作坊),基本上很难逃脱上图的命运,俗称“祖传代码”,就像一代代程序员们遗留的“宝藏”代码,在经过几代程序员的多个版本迭代功能后,特别是工期急剧缩短的情况下,先上线再优化,经过长年累月的代码迭代中存在很多隐患,导致后面来的“接盘侠”们要么无从下手,要么就进行重构,几乎可以说是程序员们的“终极噩梦”,因此又被称作“屎山代码”。
2.3 痛点3 - 维护成本高:
随着软件功能的不断迭代和更新,维护旧代码和添加新功能需要耗费大量的时间和精力,特别是没有项目文档、注释、交接文档的情况下,完全考经验去梳理与判断。
想像一下,当你刚进入一家公司,没有熟悉代码、业务的时间,第一天马上就要投入开发产出工作,如果是新的业务模块还好,如果是老业务模块改造,可想而知,是如何的绝望,需要了解整个业务模块的功能,并且还有可能老代码中还有隐藏的Bug,得到了血泪教训:“有的时候,代码能运行就不要尝试去改,哪怕是遇到屎山一样的代码”,可能还会对新人建议道:“人跟代码有一个能跑就行了。”
2.4 总结:
可以看到,使用AI的程序员可以减少人为错误、提高开发效率,并不会抢走传统程序员的饭碗,而是为他们提供更多的工具和技术支持,AI技术在软件开发领域的应用可以帮助程序员更高效地进行开发、测试和维护工作,而不是取代他们。
三、“腾讯云 AI 代码助手”,颠覆您的编码体验!
3.1 AI工具编程简介:
在敏捷开发的团队开发任务中,快速的完成业务的开发需求,迎接一位全新的得力助手——“腾讯云 AI 代码助手”, 腾讯云 AI 代码助手,是一款辅助编码工具,基于混元代码大模型,提供技术对话、代码补全、代码诊断和优化等能力。为你生成优质代码,帮你解决技术难题,提升编码效率。
只需简单的通过在IDE中(如Visual Studio Code 、JetBrains IDEs)嵌入小巧而强大的工具,就可以支持多种开发语言,无论IT工程师的老鸟还是初学者,都将在这里找到更便捷、更灵活的智能编码解决方案,接下来让我们一起深入了解,探索编程新世界!
“腾讯云 AI 代码助手”是一个编辑器插件,该插件旨在通过 AI 在代码方面的行业模型能力,和编辑器的紧密联动,来提升开发者日常的开发效率。同时插件还支持对话交流、代码翻译、代码修复等一系列场景。
“腾讯云 AI 代码助手”可以解决企业无需搭建模型运行的IT硬件资源,也无需自行训练、部署模型,解决了高技术要求、高成本、高人力投入等问题,把专业的事情交给专业的人处理,让企业和开发者可以大幅降低使用成本,真正实现开箱即用,快速提升研发效率,普惠广大企业和开发者。
3.2 开发工作全流程辅助, 即刻获取来自AI的编码建议:
“腾讯云 AI 代码助手”可以通过自然语言以及上下文内容,获取来自AI的编码建议;契合个人风格和业务需求,高效完成编码任务,生成业务代码,通过腾讯云 AI 代码助手,开发者可以更高效地解决实际编程问题,提高编程效率和代码质量。
序号 | 功能 | 描述 |
---|---|---|
1 | 代码生成 | (1). “腾讯云 AI 代码助手”可以帮助程序员自动生成代码,减少重复劳动。 (2). 例如,AI 代码助手可以对 IDE 中的对业务代码进行全面解析,在随后代码编程中进行自动补全。上下文的代码质量越高、内容越丰富,补全的代码信息越准确。 |
2 | 调试和错误修复 | (1). “腾讯云 AI 代码助手”可以帮助程序员更快速地定位和解决代码中的错误。 (2). 可以根据使用者的需求和习惯,快速检查代码中的语法错误和逻辑错误,帮助开发者规范代码格式。 |
3 | 代码优化 | (1). “腾讯云 AI 代码助手”当开发者需要处理别人的代码,或者在既有代码中进行延展开发时,可以通过 AI 代码助手快速理解和解释初始代码,降低理解成本。 (2). 提供代码优化建议,检测代码中的潜在性能瓶颈,提供针对性的优化方案,帮助程序员提升代码效率和性能。 |
4 | 单元测试 | AI 代码助手会根据函数、方法、内容逻辑生成相关的测试代码,并根据开发者的代码习惯,自动推荐单元测试的编写,提高单元测试的覆盖率,加速测试流程并提高测试覆盖率,大大减轻了测试人员的负担。 |
5 | 人工智能技术对话 | AI 代码助手将 chat 功能与 IDE 进行了集成打通;开发者可以随时随地,以各种方式向 AI 代码助手进行技术对话咨询,所获取的代码内容可以一键插入编辑器当中。 |
“腾讯云 AI 代码助手”是由腾讯云自研的一款开发编程提效辅助工具,开发者可以通过插件的方式将 AI 代码助手安装到编辑器中辅助编程工作(VS Code 或者 JetBrians 系列 IDE),开发者可以更高效地解决实际编程问题,提高编程效率和代码质量。
3.2 开发工作全流程辅助, 即刻获取来自AI的编码建议:
“腾讯云 AI 代码助手”可以通过自然语言以及上下文内容,获取来自AI的编码建议;契合个人风格和业务需求,高效完成编码任务,生成业务代码,通过腾讯云 AI 代码助手,开发者可以更高效地解决实际编程问题,提高编程效率和代码质量。
序号 | 功能 | 描述 |
---|---|---|
1 | 代码生成 | (1). “腾讯云 AI 代码助手”可以帮助程序员自动生成代码,减少重复劳动。 (2). 例如,AI 代码助手可以对 IDE 中的对业务代码进行全面解析,在随后代码编程中进行自动补全。上下文的代码质量越高、内容越丰富,补全的代码信息越准确。 |
2 | 调试和错误修复 | (1). “腾讯云 AI 代码助手”可以帮助程序员更快速地定位和解决代码中的错误。 (2). 可以根据使用者的需求和习惯,快速检查代码中的语法错误和逻辑错误,帮助开发者规范代码格式。 |
3 | 代码优化 | (1). “腾讯云 AI 代码助手”当开发者需要处理别人的代码,或者在既有代码中进行延展开发时,可以通过 AI 代码助手快速理解和解释初始代码,降低理解成本。 (2). 提供代码优化建议,检测代码中的潜在性能瓶颈,提供针对性的优化方案,帮助程序员提升代码效率和性能。 |
4 | 单元测试 | AI 代码助手会根据函数、方法、内容逻辑生成相关的测试代码,并根据开发者的代码习惯,自动推荐单元测试的编写,提高单元测试的覆盖率,加速测试流程并提高测试覆盖率,大大减轻了测试人员的负担。 |
5 | 人工智能技术对话 | AI 代码助手将 chat 功能与 IDE 进行了集成打通;开发者可以随时随地,以各种方式向 AI 代码助手进行技术对话咨询,所获取的代码内容可以一键插入编辑器当中。 |
“腾讯云 AI 代码助手”是由腾讯云自研的一款开发编程提效辅助工具,开发者可以通过插件的方式将 AI 代码助手安装到编辑器中辅助编程工作(VS Code 或者 JetBrians 系列 IDE),开发者可以更高效地解决实际编程问题,提高编程效率和代码质量。
3.3 覆盖代码生成全生命周期、全场景需求:
“腾讯云 AI 代码助手” 自动补全代码、根据注释生成代码、代码解释、生成测试代码、转换代码语言、技术对话等能力,开发者可以更高效地解决实际编程问题,提高编程效率和代码质量,满足开发者代码生成全周期、全场景需求,真正实现 “帮你想”、“帮你写”、“帮你改” 的多场景应用形态。
3.4 适配百种开发语言,主流IDE即装即用:
“腾讯云 AI 代码助手”为满足更广范围的开发者和开发场景需求,可支持100余种主流开发语言。
同时,支持开发者最常用的IDE,提供VS Code、IntelliJ IDEA、GoLand、PyCharm、WebStorm、CLion、PhpStorm等众多IDE插件,一键安装,即装即用。基本上覆盖了前、后、移动端,软、硬件等不同的开发场景,可全面满足业务的多样性,同时,还可通过生成自动化用例、在CLI中智能获取所需命令等能力,帮助开发者全面提升研发效率。
四、“腾讯云 AI 代码助手”体验:
4.1 安装GoLand IDE的“腾讯云 AI 代码助手”插件:
基础上支持市场面大多数的IDE插件,如下以GoLand的IDE来安装与落地实践。
这里遇到一个问题是,我本地的IDE进行搜索时,并没有发现能搜出来的东西,去官方的交流群询问才得知是我本地的IDE版本太低了,导致搜索不出来,解决方案就是升级到最新版本即可。
通过在Goland IDE中的Plugins中,可以搜索安装“Tencent Cloud AI Code Assistant”插件,等待1-2分钟安装完成后,需要重启一下IDE,就会在右下角提示需要账号登录插件。
在IDE中点击“登录”时即可跳转到一个web页面,打开官网可以进行注册登录,会有一个提示授权的弹框,点击“授权”即可弹出一个登录成功,这时候,再次查看IDE时,显示登录成功,可以进行功能的体验了。
如果有需要切换账号时,可以在IDE的右下角点击“Tencent Cloud AI Code Assistant”小图标,在弹出的窗口,点击“退出登录”即可完成切换账号。
4.4.4 智能满足各类编程开发需求:
功能 | 描述 |
---|---|
代码解释 | 可给出整个方法、函数的功能和完整逻辑说明,也支持选中任意代码给出解释 |
技术问答 | 在对话框中输入研发中遇到的问题,第一时间获得AI助手解答 |
实时续写 | 通过分析上下文逻辑关系,智能生成方法、函数、判断、循环体等完整的代码块 |
注释生成代码 | 直接在注释中用自然语言描述所需功能,自动生成完整函数 |
生成函数注释与行间注释 | 分析一个方法、函数、类,生成符合规范的文档注释,同时也可以识别函数中复杂逻辑逐行增加注释 |
生成单元测试 | 支持对任意方法、函数一键生成单元测试,也支持对多文件进行批量生成 |
通常程序员在写代码时,往往有60%的时间,是浪费在重复的相似度高的代码上,看我举个场景来描述一下:
要求我们新人按照项目的现有代码写一个模块的CURD,我的方案是把前辈的代码copy一份,改改Entity、Repository、Dao、Service、Controller、Router几个文件,稍微处理一下不同的逻辑,活就干完了。
这里面,说句实话,可以说没有太多的技术含量,稍微会点代码的就能胜任,而且相当于打字员,那么,能不能让“腾讯云 AI 代码助手”来实现呢?
最简单常用的功能,”腾讯云 AI 代码助手”可以根据一段注释自动生成符合上下文环境的代码,只需要简单的按下Tab键进行补全,而不用当做纯粹的打字员,逐渐把更多的时间花费在方案的思路上。
另外一个就是多行续写和推荐,但是目前在使用过程中,可能还需要继续优化一下模型,有时候并不是自己想要的结果,需要再继续优化一下,通过这些代码自动化AI生成的手段,我们可以比单纯的IDE效率要高,但是这只是一些基本的常用功能。
从实习到转正,新来公司也有差不多1年多了,最近领导觉得我可以承担更多的工作难度,所以,给了我2个需求:1是用go代码写一个给企业微信发送代码,2是用taro开发一个新的抽奖功能,需要刮刮乐的形式。
需求一:
之前也没有接触过此类需求,开会的时候,稍微请教了一下带我的前辈,让我自己去翻阅一下企业微信的文档,说是类似一个Webservice的API接口,按照他的格式请求即可,如下是我翻阅了不少文档实现的调用。
代码语言:js复制func request(performance *handler.Performance, info *entity.ErrorInfo, contact string) {
webHook := `xxxxxxxxxxxx`
content := fmt.Sprintf(`{
"msgtype": "text",
"text": {
"content": "xxxxxx,ID:[%v] 【%s】 %s",
}
}`, info.Id, info.EntryName, strings.Replace(info.StackTrace, """, "'", -1), contact)
fmt.Println(content)
// 创建一个请求
req, err := http.NewRequest("POST", webHook, strings.NewReader(content))
if err != nil {
// handle error
}
client := &http.Client{}
// 设置请求头
req.Header.Set("Content-Type", "application/json; charset=utf-8")
// 发送请求
resp, err := client.Do(req)
// 关闭请求
defer resp.Body.Close()
if err != nil {
// handle error
}
}
不懂就问“腾讯云 AI 代码助手”,如下,我先写一段文案“帮我写一段调用企业微信机器人的代码”,再使用“代码解释”,即可马上给我生成可执行的代码实例,能够极大地提升工作效率,减少重复劳动,效率提升何止十倍?
代码语言:js复制// 企微机器人消息结构体
type Message struct {
MsgType string `json:"msgtype"`
Text struct {
Content string `json:"content"`
} `json:"text"`
}
// 发送企微机器人消息的函数
func sendWechatRobotMessage(webhookURL string, content string) error {
// 创建消息对象
message := Message{
MsgType: "text",
Text: struct {
Content string `json:"content"`
}{
Content: content,
},
}
// 将消息对象编码为JSON
messageBytes, err := json.Marshal(message)
if err != nil {
return fmt.Errorf("failed to marshal message: %v", err)
}
// 发送POST请求到Webhook URL
resp, err := http.Post(webhookURL, "application/json;charset=utf-8", bytes.NewBuffer(messageBytes))
if err != nil {
return fmt.Errorf("failed to send request: %v", err)
}
defer resp.Body.Close()
// 读取响应状态码和内容
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return fmt.Errorf("failed to read response body: %v", err)
}
// 检查HTTP响应状态码
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("received non-200 status code: %d, response: %s", resp.StatusCode, string(body))
}
return nil
}
func main() {
// 替换为您的企微机器人Webhook URL
webhookURL := "xxxx" // 替换为您的企业微信机器人的Webhook URL
// 要发送的消息内容
content := "腾讯云 AI 代码助手,是一款辅助编码工具,基于混元代码大模型,提供技术对话、代码补全、代码诊断和优化等能力。为你生成优质代码,帮你解决技术难题,提升编码效率。"
// 发送消息
err := sendWechatRobotMessage(webhookURL, content)
if err != nil {
fmt.Printf("发送失败: %vn", err)
} else {
fmt.Printf("消息发送成功!n")
}
}
需求二:
另外一个功能是使用taro开发一个刮刮乐的形式的抽奖模块,之前也没接触过,按照常理先百度一波,看看有没有人有现成的方案,但是可以看到我搜索了10个页面了,还没有找好可实际落地的代码,找了不少方案,要么是不对,要么是报错。
马上使用“腾讯云 AI 代码助手”进行生成代码,可以看到1分钟内就可以生成落地的解决方案,将代码复制到项目中,如图,可以直接进行运行,实现了刮刮乐的主业务代码。
代码语言:js复制import Taro, { Component } from "@tarojs/taro";
import { View, Canvas } from "@tarojs/components";
import "./index.scss";
class Lottery extends Component {
constructor(props) {
super(props);
this.canvasRef = React.createRef();
this.state = {
winningNumber: "",
userNumber: "",
};
}
componentDidMount() {
const winningNumber = this.generateWinningNumber();
this.setState({ winningNumber });
this.drawScratch();
}
generateWinningNumber() {
const numbers = Array.from({ length: 6 }, (_, i) => i 1);
return numbers.sort(() => Math.random() - 0.5).join("");
}
drawScratch = (ctx, winningNumber) => {
const canvas = this.canvasRef.current;
const { width, height } = canvas.getBoundingClientRect();
const scale = height / 10;
ctx.clearRect(0, 0, width, height);
// Draw the background
ctx.fillStyle = "#eee";
ctx.fillRect(0, 0, width, height);
// Draw the winning number
ctx.fillStyle = "#f00";
ctx.font = "30px Arial";
ctx.fillText(winningNumber, (width - ctx.measureText(winningNumber).width) / 2, 30 * scale);
// Draw the scratch layer
ctx.fillStyle = "#fff";
ctx.globalCompositeOperation = "destination-out";
ctx.fillRect(0, 0, width, height);
// Draw the numbers
ctx.fillStyle = "#000";
ctx.font = "24px Arial";
for (let i = 0; i < 6; i ) {
ctx.fillText(i 1, (i - 1) * 40 * scale, 80 * scale);
}
};
checkWin = (userNumber) => {
const { winningNumber } = this.state;
return winningNumber === userNumber;
};
handleUserInput = (e) => {
this.setState({ userNumber: e.target.value });
};
handleResult = () => {
const { userNumber } = this.state;
if (this.checkWin(userNumber)) {
alert("恭喜您中奖了!");
} else {
alert("很遗憾,您没有中奖。");
}
};
render() {
const { winningNumber } = this.state;
return (
<View className="container">
<Canvas
canvasId="lotteryCanvas"
ref={this.canvasRef}
style={{ width: "100%", height: "80%" }}
onClick={this.handleResult}
></Canvas>
<View className="input-container">
<input
type="number"
value={this.state.userNumber}
onChange={this.handleUserInput}
placeholder="请输入您的号码(1-6)"
/>
</View>
<View className="result">中奖号码:{winningNumber}</View>
</View>
);
}
}
export default Lottery;
4.4.5 争做技术学习的“布道师”:
大家会不会跟我一样,加了很多技术大群,就是为了出了问题好在群里问一下,看看有没有经验丰富的前辈来帮忙提供一下思路或者解决方案,这种就要看对方是否忙了,有的问了如果老是问也是会很烦的,所以,能不能使用“腾讯云 AI 代码助手”来请教这些问题呢?
可以看看自从使用了“腾讯云 AI 代码助手”,经常可以在群里回复一下,“他山之石,可以攻玉”,在解决别人问题的同时,也可以自己学到不少东西,还可以更好的将“腾讯云 AI 代码助手”推广给大家使用,节省大家的时间,争取做技术的“先驱”、“布道师”。
4.4.6 永不掉线的全能技术文档:
今天接到一个需求,要将时间的选项,由日期的格式改为时间选择的格式,想要看看是哪个组件,但是发现官方不知道怎么回事,突然打不开了,这时候,只能满目的去各种救火操作去翻阅其它的资料。
但是通过使用“腾讯云 AI 代码助手”就可以轻松的实现,相当于一个永不掉线的全能技术文档,不仅不用切换官网去看Demo,还智能化的把代码都生成了,直接“采纳”即可使用。
4.4.7 代码解释和调优建议,为技术前进道路上的保驾护航:
小时候做事情,不懂就可以问父母,不会也有父母的指导,让我们能够快速茁长的成长。“腾讯云 AI 代码助手”也提供了这种功能。
- 比如“解释代码”,当我们遇到很长的代码、很长的逻辑时,为了快速知道他是什么意思呢?就可以使用代码解释来根据文件的上下文环境进行快速的进行业务了解。
- 比如“定位代码的缺陷”,做为新手的我们,往往写的代码不是太完善,如果使用“调优建议”可以生成逻辑性更强、代码维护性更高、扩展性更广的Code,少出Bug,少挨骂。
4.4.8 一键单元测试:
“腾讯云 AI 代码助手”通过利用AI大模型的生成能力和自然语言处理技术,可以自动化地编写单元测试,从而提高测试效率和代码质量,帮助开发人员规避琐碎的测试工作,可以根据输入的代码段,自动生成相应的测试用例,并判断这些测试用例是否覆盖了所有可能的边界条件和异常情况。
此外,“腾讯云 AI 代码助手”还可以根据测试结果,自动调整和优化生成的测试用例,以确保测试的全面性和准确性,上面我们就可以看到会加入err的错误判断,提高了代码的严谨性,从而确保代码的健壮性和稳定性,有助于提高代码质量,减少因代码缺陷导致的错误和故障。
使用“腾讯云 AI 代码助手”编写单元测试,可以解放开发人员生产力,让开发人员从繁琐的测试编写工作中解脱出来,专注于更复杂、更具创造性的任务,有助于提高开发人员的工作效率和生产力。