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带来的好处。

  文章来源微信公众号

  想要更快更方便的了解相关知识,可以关注微信公众号 

posted @   刘靖凯  阅读(0)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
历史上的今天:
2017-02-16 异常处理语句
2017-02-16 五种跳转的语句
2017-02-16 for循环循环时间
点击右上角即可分享
微信分享提示