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

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

作为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)原则,消除冗余代码

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

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

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

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

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

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

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

  8. 遵循阿里巴巴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个月内不可修改。