乐趣区

关于chatgpt:时代背景下的-ChatGPT到底能帮助开发者做什么呢

前言

最近喜闻乐见的技术 ChatGPT,关注度十分高,网上对于它的文章也一大片,不过很多都是对于体验或者部署的,咱们习惯去探讨它的技术、模型、趣味等等,但他能在开发者的工作中带给咱们些什么货色呢?

我应该是间接让他帮我批改代码的懒人之一,优化的成果也的确不错,但这个不应该是他的全副性能,我想作为开发者来说,我心愿 ChatGPT 能够帮我做如下的事件:

  • 优化代码品质
  • 简化工作流程

它能够说是完满的实现了这些性能,不得不说,ChatGPT让我感觉到了第四次工业革命的靠近,是咱们在有数智障 AI 对话中的一盏明灯!

注册和应用它我就不赘述了,网上也有很多优良的文章,置信大家能够搞得定!

优化我的代码

不得不说的是,有些开发者的代码的确写的不尽人意[狗头],我也会有同样的状况,偶然偷懒赶工,写的代码也就轻易凑合一下,不想细嚼慢咽的话,无妨尝试一下这个需要:

小试牛刀

需要:
存在两个 JSON 对象,一个名为 originValues(原始对象),一个名为 updatedValues(更新后的对象),对象中可能蕴含任何值,比照两个对象的值是否产生扭转,留神,对象中的值类型能够是任意类型,并且 JSON 对象有可能是深层嵌套的。

很简略的一个需要,通常能够用递归比照实现,嗯,可是我很急,我写了一份蹩脚的代码,看起来不是那么优雅,但其实现了该性能:

function compareJSON(originValues, updatedValues) {if (typeof originValues != 'object' && typeof updatedValues != 'object') {return originValues != updatedValues}

  for (let key of Object.keys(originValues)) {if (compareJSON(originValues[key], updatedValues[key])) {return true}
  }
  return false
}

OK,咱们时刻都在生产 Bug,给测试小伙伴加绩效,不过不急,咱们看看 ChatGPT 对这段代码的认识如何

它写的太简单了,我想要更简洁的版本,没事,你能够间接通知它!!

能够看到,咱们没思考到的点,包含对于 nullundefined 的判断,数组的判断它都思考到了,甚至更惊喜的是,它懂得将咱们的函数极致简化,将咱们原来的 for 循环:

for (const [key, value] of Object.entries(originValues)) {if (!compareJSON(value, updatedValues[key])) {return false;}
}

return true

转换为了 ⬇⬇

return Object.entries(originValues).some(([key, value]) =>
  !compareJSON(value, updatedValues[key])
);

尽管应用了一些新兴的语法,不过有幸有 Babelcore-js 反对的咱们不用放心过多。顺便致敬一下 core-js 的作者,石破天惊的为开源社区工作,瑞思拜!

如果这样你还不满足,那咱们能够应用极致的做法,间接将需要形容复制给 ChatGPT

它不仅完满的实现了工作,解决了各种边界值的状况,顺便还给出了测试用例,甚至于写上了正文!出其不意!如果你感觉他给的代码还是过于简单,你能够让它再执行精简,不过须要大家本人去摸索了!

简单代码优化

基于篇幅起因,这里不列出太长的代码片段,仅做一些示例,在初学者的代码中,常常会呈现各种奇奇怪怪的反复且无意义的代码,咱们想让 ChatGPT 帮咱们理分明函数的策略,并写出更好的示例!

function testFunc(a, b, target) {const result = []
  Object.values(a).forEach(aValue => {result.push(...aValue)
  })

  Object.values(b).forEach(bValue => {result.push(...bValue)
  })

  if (result.length) {return result.find(r => r.value == target)
  }
}

这段代码中,咱们通过人工剖析可得悉,ab 是两个对象,对象中的每一个元素值都是数组,作用是从 ab 数组的并集中获取 valuetarget 的元素,整顿可知,
大略的数据结构如下所示

// a,b 的类型
const obj = {o1: [{value: '123'}, {value: '456'}],
  o2: [{value: '345'}, {value: '678'}],
}

如果遇到相似的代码,我能够称之为操作过急!让 ChatGPT 帮咱们优化一下会怎么样呢!

我对于该优化后果还是很称心的,不仅理分明了思路,而且给了更优的实现形式。对于新语法的问题,我下面曾经解释过了,所以不须要过多的放心!

命名优化 / 正文优化

能够看到,咱们下面的那一段蹩脚的代码,不仅命名十分难看,而且毫无意义,对于起初的维护者来说,是如劫难个别的存在!所以命名优化与正文优化势在必得!

原本命名优化和正文优化想离开来写,然而为了给大家一些更良好的 ChatGPT 示例,我将这两步合并在了一起,只有形容清晰,他是能够了解你说的话的!

咱们接着下面的用例持续试验,刮目相待:

十分不错,心愿大家能够用到更简单的用例下面!

生成代码

生成代码是目前最罕用的性能之一,也因而衍生了诸多的插件和开源框架,如 vue-cli 相似的脚手架框架也领有生成代码的性能,VsCode 代码片段也具备生成代码的属性,不过相对来说,我还是感觉 ChatGPT 足够灵便,咱们一起来看看它的厉害之处吧!

生成 Vue 文件模板

生成 ElementUI 弹窗模板,全屏,有三个底部按钮,保留,删除,勾销,内容区域是一个餐厅预约表单

如上的代码都是能够间接应用的,也充沛合乎了咱们的需要,甚至能够更过分一些:

如果须要更厉害的性能,可能须要大家本人去尝试一下喽!

生成文档

依据 Vue 组件信息生成表格类文档,这里咱们间接应用它刚刚生成的基于 ElementUI 的弹窗组件,来帮咱们生成组件的应用文档

下面的文档生成是有谬误的,不晓得大家发现了没有,须要揭示大家的是,ChatGPT 是一个须要调教的程序,你要重复一直地通知他你的需要,你的想法,他能力了解你最终的意思,所以咱们应该持续诘问:

生成实体

咱们申请接口的时候,接口返回了如下的 JSON 构造,一般的解决方案就是本人手动编写 Typescript 实体,或者借助工具来生成实体文件,咱们同样能够借助 ChatGPT 来实现同样的性能,甚至来说能够更优良!

{
  "name": "TaroXin","age": 18,
  "gender": "男",
  "books": ["泰罗凹凸曼成长记", "孙子兵法"],
  "dept": {
    "name": "IT 部",
    "id": 10086
  }
}

通过 JSON 数据格式生成 TS 实体并写正文!

生成模仿数据

咱们曾经有了一个 Typescript 实体,让 ChatGPT 再帮咱们返回一些测试数据吧!

生成测试用例

TDD 是一个十分良好的开发习惯,他通常要求咱们先欠缺一部分测试用例,再通过需要来实现对应代码的开发,这个时候,咱们须要想一些测试用来用来撑持开发。

咱们齐全能够借助 ChatGPT 的力量。帮咱们省略这一步,如下操作:

需要:写一个减法函数,参数是 ab, 返回 ab 的差,要求不仅要实现减法性能,也要思考到浮点数引起的计算错误

接下来,让咱们借助 ChatGPT 先欠缺测试用例:

接下来咱们就能够依据测试用例去写对应的性能实现了!

生成数据库 SQL

生成 SQL,也是咱们的一个常见需要,只有形容好需要语句,就能失去一个比拟完满的后果:

简化工作流程

下面的实际是通知咱们在代码的开发方面,ChatGPT 有很强的可塑性,也有残缺的能力帮忙咱们去实现一些根本的需要。

那么在简化工作流程方面,ChatGPT 又能带给咱们哪些惊喜呢!

给我一个最佳的 ESLint 配置

十分常见的需要,网上的文章也是一抓一大把,不做过多的赘述,咱们次要看得是,ChatGPT 的可塑性有多强,说实话,我应用该性能的时候的确有一点诧异,它带给我的惊喜太多了,导致我切实有点把持不住!

替换为 Prettier

这个需要次要是演示 ChatGPT 的上下文关联,正因为有此个性,能力实现更智能的间断对话!

我要一个雪碧图

那么对于咱们在我的项目中十分罕用的需要,间接问他实现形式就能够了,如许心愿搜索引擎快点集成这些性能啊,New Bing 曾经集成了这些性能,有心愿成为第一个集成 ChatGPT 并量产化的搜索引擎,期待期待!

我要 GitHub 上的最佳示例

Github 上的内容通常会比拟繁冗,须要精准去定位需要是比拟艰巨的,它同样能够去帮咱们进行筛选:

我要从网页通信到 Popup

这里是一个比拟形象的问题,需要来源于我前几天须要写的一个浏览器插件中的。

须要从网页中间接点击按钮,告诉 Chrome 插件中的 Popup 进行更新

如果你间接搜寻在搜索引擎搜寻这类问题的话,大略会给你浏览器插件的通信原理,通信形式,并且带一些没什麽意义的示例,须要你有较强的信息分辨能力和急躁,借助 ChatGPT 的话可能是另外一种不同的体验:

我要点赞

给 ChatGPT 的需要形容

怎么样给 ChatGPT 写需要能够让其更精准的响应你的需要?我感觉你须要做到如下几点:

  1. 须要本人先明确本人的需要是什么,并且能够用失常的语句表单进去,人能够了解,ChatGPT 就能够了解
  2. ChatGPT 举例,让他能够参考市面上已有的一些软件或者实现计划,如让其参考 ElementUI 实现文件模板
  3. 长于应用 ChatGPT 的上下文性能,像正常人对话一样和它对话,有时候能取得更好的成果
  4. 交换,交换能使 ChatGPT 更加了解你的需要,强调它做错的中央并纠正是一个很好的应用习惯

摸索更多的 ChatGPT 技巧,能够让你在同行业中当先一步,一步当先则占先机,在竞争强烈的技术圈也更容易领有一席之地,加油!

结语 – ChatGPT 版

结语

明天我大家介绍了 ChatGPT 这个现金先进的 AI 对话技术,置信大家对于它的了解也更近了一步,他能帮忙咱们做的货色还有很多,我基于能力和想法无限,也不能残缺的实现所有内容,所以所有都须要大家本人去摸索,去钻研,这样也可能能够更丰盛 ChatGPT 的知识库,在当前也能够取得更精准的答案,对于技术的倒退,咱们皆是贡献者!

心愿 New Bing 的 Chat 性能尽快上线,让咱们在不应用迷信上网的条件下也能够应用 ChatGPT

去摸索吧,诸位,不晓得的货色还多着呢!我是泰罗凹凸曼,下一篇再会!

退出移动版