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

bba325cb3cd564a02381a98a151ed46b.png

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

186672a9939760417433d2fa4bd1b9e4.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,当然,最开始我们需要给它一个比较宽泛的问题,然后再一步步引导它将答案具化。f058e73d5fc4eac8c27a2fa915f52f2a.png看来ChatGPT还是信手拈来。接下来将问题具化到我们的RecyclerView。7d4b85ca6c56b59e5313034413c807c8.png78b2914c3efcab6b16a5034de3fd7f17.png由于是使用Kotlin,所以我的思路是尽量不改原来的代码,所以,拓展函数来一个?cb3fb45e7efe63f44b4e3eb26d79fc6b.png1b18fc1895ba459f4d6db2c71b0c7394.png58c1d5c532deb69980f9675bec808663.pngb04639efaa22eb7c3733ad34b1936ebe.png这时候已经有点意思了。9df2e31dfb17652bd2e33a0055d0e803.png688e251247d293380fe8872259177a55.pngChatGPT果然是老实人,我说锁屏你就真的只管锁屏?f149445fc7f2f26add2032d0bcadb66b.png42945e82dd4cd37d5acbc47d32a1c49b.png有点扯了,算了,先实现方案,后面再处理。cde242f9fc6c5989860dbdabfd6ec818.png63e16abec7cab6bc86fb0d1caa98b326.png这个我还真没想到,之前对这种方案了解不对,还真是小刀划腚子。f5dbeeb1210b568f622e331d2f8e5dc9.pngaa5be4b85662d596eaf1c2e176bde435.png不得不说,ChatGPT还是很听劝的,也很有礼貌,对于我的指责,能够好好反省。378f06e0f5a3e8fd6cb45c66a32776b6.pnge9163717e2a15313bdbb016b5884cc6d.png但当我把它的代码copy到项目里面去运行,才发现了一堆新的问题。f0f4dd07cbddf7ea97a87964df46c8b8.pngc25f9619234e776be1b070e16da9cd0f.pngc2c52a76e91959bf2a6d163e3827f11a.png2640f0e37ed82f1a5ef5c8935efd1243.png不得不说,你创造API的能力是一流的。631c5252dfd4ea15eb0a93cbf05ce695.png78e322f58e4f0d8772fd5fd1609de4fb.png态度挺好,但是,这错的是不是有点多啊,能不能一次改完?76b99238f4c4389cd4958f7850ee2195.png4b8ffae1258015156643f1e6543bc6bb.png37ccd53d3fea4596e1ff798ae1440620.png01e26ed2a71139a23dff60877b749a90.png终于改完了,我们现在在试试变更需求,看它能不能理解。44bc6df6018cd82a24bc0660f78f4903.png不错,再加点难度。924e92fe76835d87cb176e4c8fd67796.png4da4fc0c0152e609dd57a3929d1adc00.png27d917837e6108aeca2dc5bb4e0ffbbc.png这时候,ChatGPT就突然变蠢了,改了好几次都不能完成这个需求。ccd55a77f0579b64dd7a60d16a60af66.png9d59f2f01e6a8520f2febe86165a50f1.png49606ee70ea1a165cd808fcd90d836bb.png越改bug越多。fc4bda751cc6de1e6f7fa79a2ae60bb2.png9081cd801ab9a2d1c353069b4273d751.pnge2cbcd89f2774ef3ab3eefa6d79c8ac1.png9527725c808fde529d629b1f717ada1e.png1c9a11b30a3a722086f70715e146e0e2.png60ca43cb8952a9552a102291017d590f.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 >

作者:徐宜生

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值