干掉你的if else 这样写代码很优雅

举报
赵KK日常技术记录 发表于 2023/06/24 19:39:45 2023/06/24
【摘要】   作为Java开发者,我们应该遵循一定的原则和规范来编写高质量的代码。遵循简洁之道,编写符合规范的Java代码,善用设计模式,遵循SOLID原则,这些可以指导你写出优雅简洁的Java代码。下面就由丸子为大家带来本期内容吧叭~https://www.processon.com/view/618e1c451e0853689b0b099c?fromnew=1https://www.process...

  作为Java开发者,我们应该遵循一定的原则和规范来编写高质量的代码。遵循简洁之道,编写符合规范的Java代码,善用设计模式,遵循SOLID原则,这些可以指导你写出优雅简洁的Java代码。下面就由丸子为大家带来本期内容吧叭~


图片

https://www.processon.com/view/618e1c451e0853689b0b099c?fromnew=1


图片

https://www.processon.com/view/641f0546b13bd654f029ae49?fromnew=1

2.遵循DRY(Don't Repeat Yourself)原则,消除冗余代码

3. 使用有意义的变量名,方法名和类名,遵循驼峰命名法

4. 方法要做一件事,保持简短,通常不超过10行

5. 使用设计模式,如工厂模式、单例模式、适配器模式等

6. 使用常量替换魔法字符串

7. 添加注释,特别是在复杂的业务逻辑和算法部分

8. 避免过深的继承层次,一般不超过3-4层

9. 隔离复杂性,每个类都应该有一个清晰的责任范围 

10. 遵循阿里巴巴Java开发手册标准

示例1:简洁写法


public void doSomething(String name, int age) {  // 简洁方法   if (name == null) {       throw new IllegalArgumentException("name can not be null");   }   // 逻辑处理}


示例2:设计模式-单例模式简洁写法

public class Singleton {   private static Singleton instance;   private Singleton() {}      public static Singleton getInstance() {       if (instance == null) {           synchronized (Singleton.class) {               if (instance == null) {                   instance = new Singleton();               }           }       }       return instance;   }}


示例3: magic string 替换


public static final String NAME = "name";
public void doSomething(String name) {     if (NAME.equals(name)) {         // 使用常量替换魔法字符串       // ...   }}


项目实战优化我自己的代码

需求背景

当前骑手送订单之前,需要知道当前骑手送了第几单,假设当前骑手送了第i次,派单规则为第N单,则派单时派送第N-i个规则,如果i<N 则配送 i- 1个规则。

学习代码简洁之道之前我是这样写的

       RuleDo ruleDo = new RuleDo();            if (i <= RuleDoS.size()) {                ruleDo = RuleDos.get(i - 1);            } else {                ruleDo = RuleDos.get(RuleDos.size() - 1);            }            if (!RiderConfigDO.getRuleRiderCode().equals(ruleDo.getRuleRiderCode()) && StringUtils.isEmpty(reason)) {                throw new Exception("当前订单骑手派送规则已有优化,请增加配送时效或者增加接单数量");            }

学习代码洁之道之后

 RuleDo ruleDo = i <= RuleDoS.size() ? RuleDoS.get(i - 1) : RuleDoS.get(RuleDoS.size() - 1); AssertUtil.assertTrue(!RiderConfigDO.getRuleRiderCode().equals(ruleDo.getRuleRiderCode()) && StringUtils.isEmpty(reason),ErrorCodeEnum."当前订单骑手派送规则已有优化,请增加配送时效或者增加接单数量");

当然这是代码举例,msg需要替换为内部code的~我们应该使用有意义的变量名、方法名和类名,这有利于代码的阅读和理解。我们应该遵循驼峰命名法进行命名。方法应该保持简短,通常不超过10行,只做一件事。

而对于保持优雅简洁代码,精通阿里巴巴开发手册并不是开玩笑的,从小的细节来把控开发质量是非常有必要的。

但是我觉得代码的可读性和简洁性之间存在一定的矛盾与平衡。过于追求简洁性可能会损害代码的可读性,过于追求可读性也可能导致代码变得冗长臃肿。

1. 避免代码的过度复杂化以保证可读性,同时也避免过度 Pursue 简洁性导致代码难以理解

2. 通过化设计、抽象与封装等手段隐藏代码的复杂性,同时外部提供简洁的接口

3. 添加必要的注释来解释复杂逻辑,同时注释也要简洁明了,避免臃肿

4. 变量、方法、类命名要简洁明了但表达完整,communicative 起来


5. 方法要简短,遵循单一功能原则,但也要确保逻辑完整。不能过度追求方法的简洁性


kk评语:大家可以参考JavaSPI那期结合设计模式来改造我们现有的代码


总之,可读性高且设计简洁的代码,这是我们应该追求的目标。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。