美文网首页程序员
新来的小哥这样写代码!同事直呼“中毒了”

新来的小哥这样写代码!同事直呼“中毒了”

作者: 程序花生 | 来源:发表于2020-12-11 14:01 被阅读0次

一、前言

学过的代码记不住?方式不对才记不住,你这么记!

除了有点味道以外,这回是不记住了,我们编程写代码的过程和我们日常生活的例子,往往都是这样可以对应上,有了真实可以触及的实物,再去了解编程就会更加容易,也很难忘记。但可能会写着写着代码,就傻笑起来!

除了这些正能量学习的例子,我们接下来再看看哪些有毒的代码!

二、代码有毒!

以下代码用好了升职加薪,用不好开除走人!

1. 方法命名

  • 解毒:小哥应该是想写批量查询用户的方法名,结果把batch(批量),写成了bitch(婊子)
  • 点评:接口是上午写的,人是下午走的!

2. 最佳排序

  • 解毒:用数字休眠时常排序,谁醒来的时间早,谁就先输出。
  • 点评:思路清奇,要不是这次排序等了一天,老板也不能踢他!

3. 有点烧脑

  • 解毒:这是一个定义HashMap存放业务实现key,通过key调用服务的功能。但这里的key,只有insincere有用,其他的都是未实现服务。那你看到有啥问题了吗?

  • 这点代码乍一看没什么问题,看明白了就是代码里下砒霜!它的目的就一个,要让所有的key成一个链表放到HashMap中,而且把有用的key放到链表的最后,增加get时的耗时!

  • 首先,new HashMap<>(64);为啥默认初始化64个长度?因为默认长度是8,插入元素时,当链表长度为8时候会进行扩容和链表树化判断,此时就会把原有的key散列了,不能让所有key构成一个时间复杂度较高的链表。

  • 其次,所有的 key 都是刻意选出来的,因为他们在 HashMap 计算下标时,下标值都为0,idx =(size - 1) & (key.hashCode() ^ (key.hashCode() >>> 16)),这样就能让所有 key 都散列到同一个位置进行碰撞。而且单词 insincere 的意思是;不诚恳的、不真诚的

  • 最后,前7个key其实都是废 key,不起任何作用,只有最后一个 key 有服务。那么这样就可以在HashMap中建出来很多这样耗时的碰撞链表,当然要满足0.75的负载因子,不要让HashMap扩容。

  • 整体的效果如下图,key并没有均匀散列;

  • 点评:能写出这种代码就是薪资没给够,等着代码优化提加薪呢!

4. 迷之求和

  • 解毒:最终 num 结果为 0,num++ 根本没起啥作用。因为后++,是先用结果,在++操作,不会给赋值。正确写法是:num = ++ num;
  • 点评:这种错误就跟开车闯红灯似的,轻则扣分罚款,重则倾家荡产。

5. 花里胡哨

  • 解毒:代码可以运行,但是可以优化为return age > 18。
  • 点评:你们公司是按照代码行数打绩效?不做格式化、不整洁、不看IDEA工具提示,代码是写给人看的!啥有不是!

6. 数字判断

  • 解毒:判断是不是数字,不抛异常就是,抛异常就不是。这可以使用StringUtils 工具包判断,也可以自己写正则判断。
  • 点评:这代码真烧,用异常做业务。这不是把蘑菇给狗狗吃吗!狗狗没死你到是吃蘑菇呀,你吃狗粑粑。

7. 代码健壮

  • 解毒:把可能抛异常的代码用tryCatch包起来,一直跑,遇到异常也要跑。这个时候遇到异常,要做一些流程处理,最起码要打日志和报警。
  • 点评:业务开发很多时候都是为了解决异常流程,就像擦屁屁的纸80%的面积是保护手的。怎么滴,我看你这代码,是非要一直抠破呀!

8. 性能优化

  • 解毒:没啥解毒的,一公斤鹤顶红兑了一口口水!
  • 点评:点评不了啦,抓到就开了吧!

9. 无用日志

  • 解毒:日志里只打了异常,没有入参信息,当你的方法有大量的调用时,很难快速定位问题。
  • 点评:下次记得把产品经理也打日志里去,要死一起死!

10. 耗时遍历

  • 解毒:乍一看可能觉得没什么问题,但是这个遍历求和会非常慢。主要因为链表的数据结构,每一次list.get(i)都是从链表的头开始查找,与ArrayList不同,LinkedList它时间复杂度是O(n)。那如果说你不知道对方传过来的是LinkedList还是ArrayList呢,其实可以通过list instanceof RandomAccess 进行判断。ArrayList有随机访问的实现,LinkedList 是没有。同时也可以使用增强的for循环或者Iterator进行遍历。
  • 点评:根基不牢,地动山摇!一知半解,坑了老铁!

三、总结

好的代码千篇一律,差的程序升值加薪!这些有毒的代码,淋漓尽致的展示了程序员的才华出众,同时也严重怀疑就是钱给少了!

转载:https://mp.weixin.qq.com/s/5WXcXyLYWk4jVvU2lomm-Q

相关文章

  • 新来的小哥这样写代码!同事直呼“中毒了”

    一、前言 学过的代码记不住?方式不对才记不住,你这么记! 除了有点味道以外,这回是不记住了,我们编程写代码的过程和...

  • 这样规范写代码,同事直呼“666”

    一、迭代entrySet() 获取Map 的key 和value 当循环中只需要获取Map 的主键key时,迭代k...

  • 新来的同事离职了

    今天下午,我在公司前面拍照片,然后听到HR叫我们组新来的同事(工作一周了)去聊,然后他们聊了好一会儿,里面还传出了...

  • 新来的同事。

  • 新来的同事

    五月四号,来了一位新同事,管食堂的。叫阿梅。 有些人看见第一眼的时候,就似曾相识。果然,一聊起来很投机。 在食堂一...

  • 新来的同事

    办公室今年新来了一个同事,巧的很,名字与我一样,属相也与我一样,她的状态又完全是我年轻时理想自己的模样:高高的...

  • 新来的同事

    同事吐槽一下新来的同事,自从同事说了转岗后不多久就招到人吧,其实是人事那边介绍来的,应该跟人事很熟的吧。 新来的同...

  • 新来的同事

    今天前台来了一位新同事,她不爱说话,我问一句答一句,就没然后了,又各自玩手机。看她身材和年龄我还以为生孩子了,一问...

  • 新来的同事

    端午假期前一天,下午的办公室,在老板娘走后,大家更加松散,手机刷起来,闲话聊起来。 新来的同事,忽然拿起一袋零食问...

  • 程序员写代码时你不知道的秘密武器!

    我同事在写代码时总是喃喃自语,怎么办?是所有程序员写代码都这样吗? 很多网友说,这是再正常不过的现象的了,在写代码...

网友评论

    本文标题:新来的小哥这样写代码!同事直呼“中毒了”

    本文链接:https://www.haomeiwen.com/subject/bmejgktx.html