00:00
哈喽,大家好,我是技术up主小付哥,那写代码这么多年呢,我也是见过了各式各样的有毒代码,今天就给大家分享一下那些关于你同事给你下毒的十类案例代码,看看你是否中过招。记得给小福哥点个关注啊,我们要发车。那第一种呢,就是关于方法命名,有毒指数呢,三颗星,那这个方法命名呢,他应该是想做一个批量查询用户信息的一个方法,但是呢,他把这个RY bech写成了query bitch,那大家都知道bitch是啥意思啊,那如果说这个代码真的发布上线以后呢,那这个人可能真的就要被定到耻辱柱上了,以后再想修改呢,也是比较难的了,对他的点评呢,就是接口是上午写的,人呢是下午走的。啊,第二种呢,就是最佳排序有毒指数呢,三颗星啊,对于这种排序方式呢,可能就是一个刚开始做研发又有点小思的程序员写的,因为他用这种相当于是啊,数字越大啊休眠的时间越长的方式来进行排序,要不是老板呢,发现这次排序等了一天也不会踢的。
01:06
啊,第三种呢,就是有毒指数五颗星,因为这个稍微有点烧脑了啊,因为可能看不出来这个到底是为啥,它这个呢,相当于就是说把一些个元素呢,存放到哈希map中,因为它后边是一个K对应一个服务嘛。那前面这些呢,都是未实现的服务,都没啥用,只有最后这个才有用,那这个时候呢,如如果说你去把它这个K啊全都打印出来,按照这个哈奇MAP64来说,都打印出来,它的数据结构相当于是在一条哈系统上,把这些元素全部串联成了一长条的一个链啊,链式结构,为啥会成为一个链式结构,因为这些K对应的哈系统的哈系值都是一个,那这个时候它就要进行开始拉链了,而它初始化的程度呢,又是64,不是八,因为八的话,相当于说你要超过这个元素都够八个,它就要开始进行一个拆分了嘛,拆解,把元素呢放到其他的对应的位置上去,那这个时候呢,就64,我不让你拆解,我只让你数化,但是它就没到数化,那好,那这个时候呢,它就会形成一条链,那后边所有的想获取这个服务呢,它的时间复杂度呢,就都变成on了,而不是o log n的一个时时间复杂度了,那基本上使用哈奇map,大家还是希望它使用的一个是效率问题,那如果都是on,那相当于就是给代码一个下毒了嘛,最终还是会影响一定的效率。
02:21
如果说你整个哈希map全都是定义成这样的结构,把这个服务都挂在最后一个链上去,那其实这样的代码执行效率也会特别低,而且你想去审查代码发现的时候呢,又很难发现。那对于这样的代码能写出来,其实说明他的这个能力也是啊,不错的,可能就是钱给的太少了。啊第四种迷之求和有毒指数呢,两颗星啊这种其实这个应该是呃加加啊,那么这么一个方式进行求和,它呢,就是一个便利的方式进行啊处理了,而不是正常的一加100怎么计算的,那这种方式呢,如果说你真的是做一个相当于是金融类的一个呃计算,那可能就会出问题了,是吧?啊对种这种错误呢,其实就跟闯红灯啊啊轻则呢扣分罚款啊,重则呢倾家荡产,相当于这么一个情况造成止损,那下一种第五种花里胡哨啊,对于写出这种代码的研发,大部分都是,要不然你就不喜欢写代码啊,没啥追求,想着能这个代码能跑就行,怎么写都无所谓。另外一种呢,就可有可能是这个刚入行的小码农,对呢,这个也不是太清楚,也不怎么看idea的提示,其实这样代码idea右侧会有各种的这个小黄色线,告诉你这个代码啊,不对,赶紧修改,而且呢也提示快捷键,你只要上去一点,其实就能马上给你优化成啊这个return is大于18,直接返回就完事了,不需要写。
03:41
什么花里胡哨,同时呢,这个格式呢,也都是啊,不对的,什么样格式都有,而且idea中也有一些个快捷键的提示,这这样写代码其实就会写的特别差,整个代码一点逻辑都没有,而且呢也不易于维护。第六种数字判断,那这种其实很多程序员在做一些个东西的时候,经常会使用异常当成流程去正常流程去处理,但这种呢,比如说他想判断一个是否是呃数字类型,直接呢,就是隐特转换一下,如果能转换没跑异常,就是说如果转换不了就是false,那对于这样的是写代码的人,其实嗯,效率还是很低的啊,如果说你正常应该是用一些正则,或者是用一些工具的包啊来进行处理,而不是直接抛异常,因为你抛异常相当于来说会占用你的一个性能的,因为他要打异常战嘛,如果说大大量的方法都使用这个,而且又。
04:30
对外对你进行一个攻击,全都是字符串,你来判断是不是数字,是不是数字,其实整个系统的性能呢,也会呃有所下降,那这种代码呢,点评呢,相当于你是用异常做业务吗?这不就相当于你看想看一个蘑菇是不是有毒,给狗吃对吧,狗吃没死,那你就吃蘑菇呗,你不吃蘑菇你吃狗粑粑,那你的代码肯定就是一个特别混乱的代码。第七个就是关于代码建状性的问题,他这种代码建状性,其实你可能哎想做一个循环处理对吧,循环处理之后呢,你抛异常,抛异常不抓啊,让他继续跑,直接肯定用,那这有可能就造成死循完了,你处理啊业务嘛,处理业务之后呢,你就想也不咋日志就直接就处理了,处理完之后跑异场,跑异场,哎感觉没啥事啊,继续执行啊,这样代码如果让你写出来,可能就整个把整个呃程序拖垮了,其实我们正常去开发业务代码的时候都知道,大部分我们都是在解决异常流程,其实正常流程非常简单,做完之后呢,大部分都在解决异常流程,就有点像啊擦P的纸80%的面积,其实都是保护手的,但怎么的呢?看你的代码,就是说他一定要把这个抠破了一样啊,就有点是这种感觉。
05:37
第八种性能优化,这可能就是留留坑吧,对吧?嗯,你故意的把这个方法中加一个设置点SLEEP3000毫秒以后优化后呢,诶优化成500毫秒,以为你能删了呢,没有删,竟然优化成500毫秒,留着下次晋升加薪的时候再继续优化呗,就像这种的点评的就有点像一斤这个鹤顶红啊,兑一口口水的方式给别人服用太太差。
06:02
啊,第第九种不用日志,就大家呢,经常会需要你去打印一些个日志嘛,来看系统有有没有什么问题,但是你打印的日志就打一个L啊,啥都不打,就是跑异常,那个no泡的控制帧异常,但是为啥呢?入参市场当时是啥情况呢?因为这个代码到线上一跑的时候,那就是需要知道他是当时是哪个入参进来了,发生什么情况了,呃,有哪些数据你能去追踪呢,追踪不了啊,就告诉你漏泡呢,你也不知道啥异常,那真正的跑到线上,其实你就很难排查了,不是说像你本地啊,就那么一点代码啊,大家都很很好查,那这个呢,其实就很难很恶心,那对他的点评,下次呢,你要是打这种日志,那你就把产品经理也打进去,要死就一起死了。第十种耗时的一个便利啊,轻易来说,一般呢大家都使用I list,但有的不太清楚啊,觉得link list比较好,直接杀另一个list,就不清楚一些个link list啊list啊对应的有什么样的呃作用啊,直接就使,使完之后呢,还get I,一个一个去get,因为你的get I相当于它时间复杂度,从列表呢就变成一个呃oon的时间复杂度了啊对吧,你整个的性能就会特别下下降,那这个呢,大家可以做一下呃便利测试看看效果。
07:11
对他点评呢,就是对这种根基不牢,地动山摇一知半解,坑了老铁真的是。那好的代码呢,真的是千篇一律,但差的程序员呢,真的是有可能升职加薪,这些有毒的代码呢,也淋漓尽的尽致的展示了程序员的才华,同时呢,也严重怀疑这些是钱给给少。那你还遇到过哪些有毒的代码呢?可以分享到评论区,让兄弟们开开眼。好了,本期分享到这里就结束了,感谢关注技术up主小富哥也会学到的更多,记得到我的首页看看哦,成天分享成长,让自己和达人都能有所收获,我们下期再见,拜拜。
我来说两句