ChatGPT照猫画虎
照猫画虎,依葫芦画瓢,是ChatGPT的能力之一,在一个项目的开发过程中,也存在着很多类似的工作,特别是一个项目的架构,有其身体的特点,如果让GPT依据语义提示来生成代码,会和原架构存在着一定的差异,这时,“依葫芦画瓢”就好用了。这时就要先构建好一个“葫芦”,然后让ChatGPT依这个“葫芦”帮我们“画瓢”。
参(葫)照(芦)类:
/// <summary> /// 人员 /// </summary> public class RenYuan { /// <summary> /// 编号 /// </summary> public int BianHao { get; set; } /// <summary> /// 名称 /// </summary> public string MingCheng { get; set; } /// <summary> /// 性别 /// </summary> public bool XingBie { get; set; } /// <summary> /// 生日 /// </summary> [YBDateTime("yyyyMMdd")] public DateTime ShengRi { get; set; } public override string ToString() { return $"编号:{BianHao},名称:{MingCheng},性别:{XingBie},生日:{ShengRi}"; } }
Prompt:参照上面类把下面数据生成类租户:编号,名称,类型,状态,创建时间
生成(瓢)结果:
public class ZuHu { /// <summary> /// 编号 /// </summary> public int BianHao { get; set; } /// <summary> /// 名称 /// </summary> public string MingCheng { get; set; } /// <summary> /// 类型 /// </summary> public int LeiXing { get; set; } /// <summary> /// 状态 /// </summary> public int ZhuangTai { get; set; } /// <summary> /// 创建时间 /// </summary> [YBDateTime("yyyyMMdd")] public DateTime ChuangJianShiJian { get; set; } public override string ToString() { return $"编号:{BianHao},名称:{MingCheng},类型:{LeiXing},状态:{ZhuangTai},创建时间:{ChuangJianShiJian}"; } }
其实在“画瓢”过程中,也是可以“添油加醋”的,这样既保证了统一的架构规范,又根据实际生成了了个性化功能。
参照接口&类:
public interface IRenYuanService { Task<bool> Add(RenYuan renYuan); } /// <summary> /// 商品Service /// </summary> public class RenYuanService : IRenYuanService { private readonly IDbConnection _conn; public RenYuanService(IDbConnection conn) { _conn = conn; } /// <summary> /// 添加人员 /// </summary> /// <param name="renYuan"></param> /// <returns></returns> public async Task<bool> Add(RenYuan renYuan) { var sql = "insert into RenYuan(MingCheng,XingBie,ShengRi) values(@MingCheng,@XingBie,@ShengRi)"; var result = await _conn.ExecuteAsync(sql, renYuan); return result > 0; } }
Prompt:
参照上面的接口和类生成ZuHu的Service接口和类,另外添加一个逻辑删除的方法,把ZhuangTai改为0
生成结果:
public interface IZuHuService { Task<bool> Add(ZuHu zuHu); Task<bool> Delete(int bianHao); } public class ZuHuService : IZuHuService { private readonly IDbConnection _conn; public ZuHuService(IDbConnection conn) { _conn = conn; } /// <summary> /// 添加组合 /// </summary> /// <param name="zuHu"></param> /// <returns></returns> public async Task<bool> Add(ZuHu zuHu) { var sql = "insert into ZuHu(MingCheng,LeiXing,ZhuangTai,ChuangJianShiJian) values(@MingCheng,@LeiXing,@ZhuangTai,@ChuangJianShiJian)"; var result = await _conn.ExecuteAsync(sql, zuHu); return result > 0; } /// <summary> /// 逻辑删除组合 /// </summary> /// <param name="bianHao"></param> /// <returns></returns> public async Task<bool> Delete(int bianHao) { var sql = "update ZuHu set ZhuangTai=0 where BianHao=@BianHao"; var result = await _conn.ExecuteAsync(sql, new { BianHao = bianHao }); return result > 0; } }
我试了一下现有的GitHub Copilot和GitHub Copilot Chat还不能在.cs文件级别的“模仿”,只能在当前上下文中进行,相信,随着时间推移,这种功能会出现在IDE中,让开发人员更丝滑使用GPT带来的好处。
文章来源微信公众号
想要更快更方便的了解相关知识,可以关注微信公众号
****欢迎关注我的asp.net core系统课程****
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构