干掉你的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)原则,消除冗余代码
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那期结合设计模式来改造我们现有的代码
总之,可读性高且设计简洁的代码,这是我们应该追求的目标。
- 点赞
- 收藏
- 关注作者
评论(0)