4

当我用ChatGPT摸了一上午鱼,结果......

 1 year ago
source link: https://blog.csdn.net/eclipsexys/article/details/131566523
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

当我用ChatGPT摸了一上午鱼,结果......

original.png
eclipse_xu newCurrentTime2.png 于 2023-07-05 08:30:34 发布 articleReadEyes2.png 59
文章标签: chatgpt

37c188f801d4a54df11ef9a5d91aa10f.png

点击上方蓝字关注我,知识会给你力量

d7e9afb0d2d887fc625b39202b554d87.png

经常有人问我,ChatGPT出来这么久了,你怎么不写点教程(割点韭菜)呢?其实,从它一出来,我就关注了,也在平时的工作中进行了使用,正好最近在处理一个埋点的问题,就拿ChatGPT来进行下演示吧,看我怎么用ChatGPT来摸鱼,解决我们平时遇到的问题。

问题是这样的,相信很多朋友也遇到过,那就是RecyclerView的Item曝光埋点问题。最开始对埋点数据要求不高的时候,埋点代码,都是直接写在onBindViewHolder�里的,这是最简单的方式,但是问题在于RecyclerView的预加载会创建一些页面不可见的缓存Item,这就导致了曝光数据不准,所以,当产品突然要求更加精准的曝光埋点时,这种方式就显得手足无措了。

这个问题的解决,国际上大致有两种方案。

一种是基于Adapter,在滚动停止时,计算当前firstVisible和lastVisible,并与上次的记录进行对比,从而计算出曝光的Item,这种方式也是简单有效,但是弊端在于统计粒度比较粗,如果以后产品要按照「Item展示大于x%才算曝光」,这样就无法实现了。

那么另一种方案,就是计算当前View的已经绘制的Rect和原始Rect的对比,从而可以推断当前View的曝光状态,类似airbnb的epoxy,就是这种方案https://github.com/airbnb/epoxy,这种方式的定制程度就比较高了,但是稍微复杂一点,需要处理好监听的管理,否则会有一些性能压力。

ok,现在压力给到ChatGPT,让我们来看看它是如何解决这个问题的,下面的这些截图,就是我和ChatGPT的完整对话过程,首先,我们把问题抛给ChatGPT,当然,最开始我们需要给它一个比较宽泛的问题,然后再一步步引导它将答案具化。

adde5e7e4645462ee052d5e1c84a37a1.png
看来ChatGPT还是信手拈来。接下来将问题具化到我们的RecyclerView。
d3a340ddd3850a4b646654ce301a5a47.png
df9445364461688261786dae437061cf.png
由于是使用Kotlin,所以我的思路是尽量不改原来的代码,所以,拓展函数来一个?
407e17ac8a23a6da5d7cb0d87cbca2cd.png
73618f1e3b473b35c5b32154dce4079c.png
9ee7995d3309e5bdd39e6d368e481149.png
f0f17e2974e77ba97871c863e790b642.png
这时候已经有点意思了。
32989b8353df29f185087ea0b9d5f79a.png
9593ccacb70e94d96effd3ae42ac874b.png
ChatGPT果然是老实人,我说锁屏你就真的只管锁屏?
adb1e233e9f7b2a090bd35e119e27529.png
f7adbfa98138419194cec440d740c291.png
有点扯了,算了,先实现方案,后面再处理。
850d8fbb9ee8a0e501e56181b5e3deb3.png
dbcb9da2e00a7c1166df4ec194258602.png
这个我还真没想到,之前对这种方案了解不对,还真是小刀划腚子。
abb73493359c221b387a22cc8dbe8fa0.png
66c661ce632b837cf3891839dbcb4244.png
不得不说,ChatGPT还是很听劝的,也很有礼貌,对于我的指责,能够好好反省。
21860858b52df8bfbeae376766761771.png
56c8929f9dd25c7229db6e822359b14c.png
但当我把它的代码copy到项目里面去运行,才发现了一堆新的问题。
8f5183c6625d7263ae0a2eb298b8da6b.png
1fd5e6d93d7b14677e95bd23531fc4db.png
ff5b2572161b2a5839eb9af7187713f2.png
c41cad304867bf42b0a1e13f8985950e.png
不得不说,你创造API的能力是一流的。
13e3aa12f7f9d9eeebc72101e090177b.png
a2065f8a80af03bdf81a4953134da8f6.png
态度挺好,但是,这错的是不是有点多啊,能不能一次改完?
99ec1a38960ba6150729b71ae89001e8.png
26aebb1f4b40879ab4ceb8da5690c431.png
7c8de515029601b481919864de7ea5be.png
b06c81397a9932247d4efc2f2bb0c6d0.png
终于改完了,我们现在在试试变更需求,看它能不能理解。
a7104af135ff7c2065e6d9b62280dd63.png
不错,再加点难度。
671fbbc50125e87f12b86672e37d82d9.png
c91865f67ec9a99a5d144e30dc02ad58.png
0edac8f87de32e05cc4690bd0cd6a400.png
这时候,ChatGPT就突然变蠢了,改了好几次都不能完成这个需求。
7d4417995c5e4ea51bea70abf3ca78e3.png
3393cde84d4b30a795a27fb125d9a020.png
a70957fbc43477af1c657dad2777a464.png
越改bug越多。
97649506fb9f0a0299771c05259fbdee.png
548a7a675f73d1ed7c6e4f39ac5c5e26.png
5a781d00e5c08f717dd3bb37bbd60534.png
88be61f9ae704d6967293d8bc559be9c.png
a81151f1835cfd67edfc61d0c6d27461.png
e0da4240b58e72192ce703ef2c30a8cd.png
到这个时候,我已经失去耐心了,这个bug来来回回改了这么多次,依然有问题,也许是跟我对话时间太长,变蠢了?

总而言之,我花了一个上午的时间想利用ChatGPT来摸鱼,但最后发现竟然比我自己做还累??我不仅要检查它的思路是否正确,还得给它解bug?

其实这个问题并不复杂,我们在问它之前,已经有一些思路了,但是最终ChatGPT并没有生成完整能符合需求的代码,不过这也不能全怪ChatGPT,它毕竟只是一个出道两年的练习生而已。

虽然忙了一上午没摸成鱼,但是我们也进一步了解了ChatGPT,不可否认,它的确有用,但还不足以能威胁到我的饭碗。那么我们能利用ChatGPT摸什么鱼吗,当然是可以的。

首先,你可以一定程度上替代搜索引擎,虽然有些问题它有些瞎扯淡,但是比起百度来说,我觉得还是更胜一筹的,很多简单的问题,基本就可以放弃百度了,直接ChatGPT就好了。

其次,你可以借助ChatGPT来给你提供思路,虽然它的代码不一定能完全满足你的需求,但它的思路,基本还是符合国际惯例的,有时候甚至还能给你一些惊喜。

最后,ChatGPT是需要调教的,别指望一下子就能给你很完善的回答,你需要一步步引导它,但对于像我这个level的程序员来说,这就好像在面试一个出道两年的练习生,有点惊喜,但不多,更多的是无奈,回答不到点子上。

当我用ChatGPT摸了一上午鱼,结果......我浪费了一上午!!!

向大家推荐下我的网站 https://www.yuque.com/xuyisheng  点击原文一键直达

专注 Android-Kotlin-Flutter 欢迎大家访问

本文原创公众号:群英传,授权转载请联系微信(Tomcat_xu),授权后,请在原创发表24小时后转载。

< END >

作者:徐宜生

更文不易,点个“三连”支持一下👇


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK