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

Android群英传

共 2136字,需浏览 5分钟

 · 2023-07-05

686a1df279370e06b87ecb8a9015251b.webp

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

c84d260aa1ff32db54c761f10a10c1ab.webp

经常有人问我,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,当然,最开始我们需要给它一个比较宽泛的问题,然后再一步步引导它将答案具化。5b2e5ee701c925cd301b1c249721e62a.webp看来ChatGPT还是信手拈来。接下来将问题具化到我们的RecyclerView。f82344faece5e6c4a7e4ffa3299ce412.webpeeae894a2f558a21ab11f8c7a952ac6f.webp由于是使用Kotlin,所以我的思路是尽量不改原来的代码,所以,拓展函数来一个?1aed376a4c6be34872e4a68e5570b7a6.webp41740f9b4f1aaa2649d5e46cc9f53ebe.webp50d38dfcd473976aa218b874268ace7a.webp96a6eb7a8c7cca34cd5f4cd172c4629b.webp这时候已经有点意思了。72c329004737d170af742c2cbe6e092b.webp957adf327870082a06ec30666089ef62.webpChatGPT果然是老实人,我说锁屏你就真的只管锁屏?c3b3d1a2b499da3dc2fb5929ede54ce0.webpc9990f4c4aee3f3c230c4268b096db7c.webp有点扯了,算了,先实现方案,后面再处理。c6e59c95792c27f9cb7b5c7660b1c358.webp35c561ccd92e1250c40f284c047ad51c.webp这个我还真没想到,之前对这种方案了解不对,还真是小刀划腚子。e1bd96546ee0092ac5e305db7d704698.webpbb4a5a165c1a6ad3867c7477d5c564e2.webp不得不说,ChatGPT还是很听劝的,也很有礼貌,对于我的指责,能够好好反省。c2911a9fb30844b78e3f8a703f576ee8.webp849d2838608af2cede12cb55ed645921.webp但当我把它的代码copy到项目里面去运行,才发现了一堆新的问题。6d131ed0067dd536a2e9f99fe1cdc57a.webp79f726c26d7dfd41846f189dcb12fade.webpfeff69ba321f2abebe67d6d58b1fb1c3.webp948e9e84b5b53592d713fcf3bd1cb90c.webp不得不说,你创造API的能力是一流的。4989448dbf08587da52f467bdbf47e83.webp796068e427ad319c30c55d227eddd167.webp态度挺好,但是,这错的是不是有点多啊,能不能一次改完?da73dfcb305f1b2691250b1b97188b22.webp1c1205d11f2c347068136528238c471a.webpff3c24df095d6bd0690e83cf086fe04d.webpf397e51a1b009a1b090c1bfc10d8f0fa.webp终于改完了,我们现在在试试变更需求,看它能不能理解。2ec9390db820858dec2f214e68969937.webp不错,再加点难度。65e9b2563495c53bc00c96a79581ddfd.webp3304d3ca4013271a015d81cbe762f26d.webp68e272994f8361287e7156a369c77e35.webp这时候,ChatGPT就突然变蠢了,改了好几次都不能完成这个需求。8c398db2eb194314a189471adf1769b1.webp098f917b98f4df2eee660a6aa0979ceb.webpb74571927486e62ad691d2c486bf4348.webp越改bug越多。d43e25ee87fb18fc5b44d8ecf118c15f.webp14e7d5d86f8d226cf9925c81def9dc5c.webp440ef252ac07f2cd5d7994d64eb5c247.webpe1031792fd77667962ab8f56b7aad062.webp98b4d1a1679426707f145b784771fa1e.webp8e891cee981c0730459da575e1db7ba6.webp到这个时候,我已经失去耐心了,这个bug来来回回改了这么多次,依然有问题,也许是跟我对话时间太长,变蠢了?

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

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

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

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

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

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

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

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

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



往期推荐


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

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


浏览 21
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报