前言

我是一个很注重功率的人,我的终极梦想便是能有办法尽或许的压缩写事务代码的时刻,留更多的时刻给咱们去做一些优化或者提升自己,而不是花大部分的时刻在写事务上。我之前就写过一篇文章/post/720205… 运用东西来压缩开发时刻,但这个办法顶天能压缩你现在开发时刻的20%,这还是很理想的状况,正常也就只能8%左右。

好巧不巧,前段时刻不是ChatGPT火起来了吗,所以我就想来探究一下ChatGPT能不能辅佐咱们开发以此来进一步压缩时刻。或许有的人问了,都出来这么久了,为什么现在才写。这不是现在处于一个流浪状况,前段时刻一向在找工作也没时刻写文章,所以有公司缺Android开发的话,是吧,能够考虑考虑小弟。

回归正题,ChatGPT现在能不能辅佐咱们进行开发,我这儿举几个比方,看看电脑的作用是不是比咱们大脑给力。

1. 给个json让它生成实体类

这个场景是这样的,一般咱们不是要依据后台接口文档去写咱们对应的实体类吗,那假如这个接口有20几个参数,咱们一个个复制粘贴参数名称,就比较耗时,所以看看ChatGPT能不能帮咱们分忧解难。

ChatGPT现在可以用来辅助开发吗?

ChatGPT现在可以用来辅助开发吗?

哎哟,不错哦,有点东西,这关它算是能通过了。可是依据json生成实体类这操作,AS中也有插件能做到,所以做这件事并非你不可

2. 依据描绘生成资源文件

平时咱们开发,多多少少会自定义一些背景,圆角这些作用,然后咱们看看能不能不花时刻在写这种代码上面。

ChatGPT现在可以用来辅助开发吗?

ChatGPT现在可以用来辅助开发吗?

哎哟,不错啊,现已很能够了,依据我的描绘就能写出来。可是这个作用,假如你公司是用蓝湖来看UI图的话,蓝湖也能帮你主动生成drawable的代码(有时分不太准要修正)。或者简单的我也能够依据我自定义的Live Templates去生成更快。这儿让它去生成的话,还要写描绘。可是假如是杂乱的作用,让它来做也是个不错的思路。

我只能说有用,但不多。

3. 帮我写反射代码

我要做hook,我懒得去写反射相关的代码,让它帮我写

ChatGPT现在可以用来辅助开发吗?

ChatGPT现在可以用来辅助开发吗?

这个作用我觉得的确挺不错,是能完成这个功用,可是有两个当地不符合希望的情况,第一个是我希望是用ClassforName,它直接.Class,然后我希望对象是传过来的,它直接newInstance创建(当然这是我描绘不行清楚的原因)。可是没关系,咱们能够在这根底上去改。个人觉得这个操作是能节省开发时刻

4. 查看代码并改正

我以单例为比方吧,我乱下一段单例的代码,然后给它一个描绘,看它能不能完成。这个场景是用来模拟,我脑子里有某个功用相关的知识点,然后想写这个代码,可是我不记得具体了,正常的做法便是我去网上找个Demo让我回忆唤醒一下,然后再写。现在我希望它能依据我瞎写的代码转成正常的代码

ChatGPT现在可以用来辅助开发吗?

ChatGPT现在可以用来辅助开发吗?

看得出,我乱写的代码很离谱,它也能帮我纠正过来,留意,这儿有个很有意思的当地,我的描绘中,可没有阐明我想写的是单例,是它直接依据我这个瞎写的代码判别出我想写单例,然后进行纠正。

是挺好的,可是还是有问题。我特意在描绘写了多线程环境,它没给我加volatile,也没给我加私有结构办法。真就差一点了,老铁,不然你真超神。

5. 帮我做单元测试

众所周知,单元测试是开发流程中的一环,而咱们由于没时刻,所以很少去做,就算去做,也只是对一些咱们觉得会出错的用例去做,而不会尽或许的掩盖。看看它能不能帮咱们整。

ChatGPT现在可以用来辅助开发吗?

ChatGPT现在可以用来辅助开发吗?

不是大哥,你就帮我写一个啊,把描绘给改具体一点试试看

ChatGPT现在可以用来辅助开发吗?

ChatGPT现在可以用来辅助开发吗?

ChatGPT现在可以用来辅助开发吗?

ChatGPT现在可以用来辅助开发吗?

ChatGPT现在可以用来辅助开发吗?

ChatGPT现在可以用来辅助开发吗?

前面写得真不错,后边由于它的长度是有约束的,所以我说“继续”,格式就变了。可是没关系,还能能完成咱们想要的作用的,可是你也看到了,你得描绘清楚它才能做到

6. 生成逻辑代码

这个我是花了挺长时刻去测的,所以之前一向没写文章,然后现在找工作也没时刻总结具体的流程。我就直接说终究的作用吧。完成不了!

为什么完成不了,我测试的时分做法是,假定这个功用不好其它的功用耦合,高内聚,然后咱们依据流程图,去描绘这个功用过程,然后再描绘一些留意事项。

终究导致完成不了的有以下一些原因:
(1)长度不行,上面现已演示了,我说“继续”之后,它会给我一些和之前不太一样的代码,导致很奇怪
(2)许多细节问题,像我上面举例的反射那个,它是能写出来了,可是有些当地不是我所希望的。你能够说我描绘不行好,但你想想,你要描绘够具体,你就要花许多时刻去写这个描绘,然后去想怎么写能让它了解我的一个想法。相当于把写代码的时刻花费到写描绘的时刻
(3)其实这个过程中我现已是写了许多描绘,接着上一条去说,便是这个意思,写描绘花了许多时刻。然后你要查看它的代码(当然它的代码是好了解),可是这样一来一回也是花时刻的
(4)它有些当地写得很具体的,你希望它笼统,成果它给你具体写出来了。比方说你说有个类TimeManager,这个类是你现已写好的了,你希望它直接去调就行了,成果它给你从头去创建一个TimeManager出来(当然这对终究的作用影响不大)
(5)有些当地会写得不适宜导致你直接想重写
(6)花时刻,太花时刻了,这不是你写描绘写一次就能出来成果然后改的,许多当地觉得不适宜,然后你会想是不是描绘不行清楚,然后去修正描绘,再让它从头帮你生成代码,以此不断循环几回,着实花费时刻

总结

ChatGPT现在能够用来辅佐开发吗?我的结论是能,但又不完全能。

你得发挥你的想象力,思考让它能在哪些方面去辅佐你。比方上面我罗列的一些场景,它能做到的,然后你觉得不合意的话能够在这根底上去修正。也便是说他是能做到至少把你的需求完成90%这种底部,然后剩余的10%你去修正就行。除了上面的比方外,比方你做国际化,你把string.xml的内容给它,告知它你要做欧美的国际化翻译成英文 ,那肯定会比你一条一条翻译快,可是它也会有些翻译是不合你意的。你不能说是它不行,由于有些翻译是依据上下文的场景的,它没有上下文,所以肯定是做直接翻译。

回到一开始说的,我希望的作用是减少事务开发的时刻,可是这个它是真无法做到了,至少我测验的是没办法。所以ChatGPT能做辅佐开发,但现在没办法辅佐事务的开发。

看到作用的确很牛逼是吧,可是也有缺陷,缺陷便是描绘花时刻,然后模糊的描绘作用或许不太好。我感觉其实便是现在这项技术还不太老练的一个体现吧。假如真的发展到能用的时分,放心,AS会有官方的插件、官方的东西去运用它,到时分肯定能更好的辅佐开发。

本文正在参加「金石计划」