保存成功
保存失败,请重试
提交成功

代码优雅之道:消除代码中的“坏味道”

作者/分享人:ilomilo
4年开发经验,精通数据结构和算法,精通web框架源码(spring、mybatis、webflux等),精通中间件的最佳实践和源码,精通分布式技术

代码中的“坏味道”如何灰尘,每天都会增加,一日不去清除,便会越累越多。如果用心去除这些“坏味道”,不仅能提高自己的编码水平,也能使得代码可读性提高很多。

本场 Chat 为大家总结了日常工作中遇到的“坏味道”,及清理方法:

  1. 用 Map.entrySet() 遍历 map 而不是 Map.keySet()
  2. 用 Collection.isEmpty() 验证集合是否为空而不是 Collection.size()
  3. 集合初始化尽量指定大小
  4. 字符串拼接使用 StringBuilder
  5. List 的随机访问
  6. 频繁使用 Collection.contains() 请使用 Set
  7. 长整型常量后添加大写 L
  8. 不要使用魔法值
  9. 不要使用集合实现来赋值静态成员变量
  10. 使用 try-with-resources 语句而不是 try-catch-finally
  11. 删除未使用的局部变量、私有方法、字段和参数
  12. 删除表达式的多余括号
  13. 工具类应该定义私有构造函数来屏蔽隐式公有构造函数
  14. 删除多余的异常捕获并抛出
  15. 公有静态常量应该通过类访问
  16. 不要用 NullPointException 判断空
  17. 使用 String.valueOf(value) 代替 i+value
  18. 过时代码添加 @Deprecated 注解
  19. 禁止使用 new BigDecimal(double)
  20. 返回空数组和空集合而不是 null
  21. 优先使用常量或确定值来调用 equals()
  22. 枚举的属性字段必须是私有不可变的
  23. 使用通用工具函数而不是大量的逻辑判断代码
  24. 拆分超大函数
  25. 同一函数内代码块级别尽量一致
  26. 封装相同功能代码为函数
  27. 封装获取参数值函数
  28. 通过接口参数化封装相同逻辑
  29. 使用卫语句减少代码层级
  30. 把复杂条件表达式封装为函数
  31. 尽量避免不必要的空指针判断
  32. 内部函数的参数尽量使用基础类型而不是包装类型
  33. 函数的参数尽量控制在 3 个以内,多余的参数封装到 DTO 里面
  34. 尽量用函数替换匿名内部类的实现
  35. 利用临时变量优化代码提高可读性

适合人群: 有代码洁癖,经常重构代码,经常 Code Review 的 Java 技术开发

会员免费订阅
已有115人预订
预订达标
文章出炉
     
09月19日
10月24日
预订后,您将在10月24日之前获得一篇专享文章
请务必添加GitChat服务号以查看活动进度及获取活动通知。
退款保证:
• 09月20日前,预订人数未达标,您将获得全额退款。
• 作者未按时完成文章,您将获得全额退款。
你可能还喜欢
如何依靠副业赚钱,应对人到中年的职场危机
代码GG陆晓明
数据结构算法常见的 100 道面试题全解析:2019 版
攻城狮
怎样的一份“副业”,能让你不依赖“死工资”?
一尘
Redis 面试题全解析
驰骋
送卫衣:GitChat 1024 留言有奖活动来啦!
GitChat 内容组
Redis 难题突破,最经典 36 题含详细解析
慕容千语
【有奖活动】用一句话证明你是程序员
🐡赵小胖
Zookeeper 详解与实践,你面试工作都绕不开的必考题!
latent
前端 MVVM 模式中的数据层(Model)实战应用
Think.
VSCode 使用教程:使用好的工具提高你的工作效率
暖和狐狸
详解 Google Protocol Buffer 协议
拾贝壳的人
大白话聊技术之 Redis 秒杀系统的设计与实现
咔咔
让架构师和研发团队争论了 10 分钟的简单事务问题
zaqweb
线程池原理及优化
ilomilo
深度学习必备之高等数学知识加油站
奔跑的小米
微信扫描登录
关注提示×
扫码关注公众号,获得 Chat 最新进展通知!
入群与作者交流×
扫码后回复关键字 入群
Chat·作者交流群
入群码
该二维码永久有效