干掉你的if else 这样写代码很优雅
作为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)原则,消除冗余代码
使用有意义的变量名,方法名和类名,遵循驼峰命名法
方法要做一件事,保持简短,通常不超过10行
使用设计模式,如工厂模式、单例模式、适配器模式等
使用常量替换魔法字符串
添加注释,特别是在复杂的业务逻辑和算法部分
避免过深的继承层次,一般不超过3-4层
隔离复杂性,每个类都应该有一个清晰的责任范围
遵循阿里巴巴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行,只做一件事。
而对于保持优雅简洁代码,精通阿里巴巴开发手册并不是开玩笑的,从小的细节来把控开发质量是非常有必要的。
但是我觉得代码的可读性和简洁性之间存在一定的矛盾与平衡。过于追求简洁性可能会损害代码的可读性,过于追求可读性也可能导致代码变得冗长臃肿。
避免代码的过度复杂化以保证可读性,同时也避免过度 Pursue 简洁性导致代码难以理解
通过模块化设计、抽象与封装等手段隐藏代码的复杂性,同时外部提供简洁的接口
添加必要的注释来解释复杂逻辑,同时注释也要简洁明了,避免臃肿
变量、方法、类命名要简洁明了但表达完整,communicative 起来
方法要简短,遵循单一功能原则,但也要确保逻辑完整。不能过度追求方法的简洁性
kk评语:大家可以参考JavaSPI那期结合设计模式来改造我们现有的代码
总之,可读性高且设计简洁的代码,这是我们应该追求的目标。
同步该文章
- 点赞
- 收藏
- 关注作者
评论(0)