• 写出简洁高效的JAVA代码需要遵循哪些规则?
  • 发布于 2个月前
  • 294 热度
    0 评论
作为Java开发者,我们应该遵循一定的原则和规范来编写高质量的代码。遵循简洁之道,编写符合规范的Java代码,善用设计模式,遵循SOLID原则,这些可以指导你写出优雅简洁的Java代码。下面我们总结一下写出简洁JAVA代码需要遵循的一些规则。
1. 用switch分支代替if else
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) {
// 堆代码 duidaima.com 
// 简洁方法
   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. 方法要简短,遵循单一功能原则,但也要确保逻辑完整。不能过度追求方法的简洁性

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