好的代码 更多的也是为了后期维护,哪怕后期不须要你来维护 ,清晰干爽的代码也会为做者留下好的印象java
而且 在工做团队中 能够施加影响力bash
小江同窗想 放学后去同窗家看电视 写做业, 可能会比较晚回到家里单元测试
他须要向家里人打声招呼 若是家里人不一样意的话,他就必须后放学后直接回家学习
家里人包括 爷爷 奶奶 爸爸 妈妈 哥哥 姐姐(其中一位赞成便可)测试
一个条件的成立,须要n个逻辑组合 或与并不是
这样的代码 读起来很不舒服 读的过程当中须要从新梳理逻辑
维护一个n年的老项目,处处是这样的长代码 接手的人也很差梳理清楚脉络
然 封装下效果就会好不少
if(father.permit() || mather.permit() || grandPa.permit() || grandMa.permit() || brother.permit() || sister.permit()){
//去同窗家写做业
}else{
//放学后回家
}
复制代码
Family family=Family.build(father,mather,grandPa,grandMa,....);
if(family.permit()){
//去同窗家写做业
}else{
//放学后回家
}
将上面主干逻辑中的
if(father.permit() || mather.permit() || grandPa.permit() || grandMa.permit() || brother.permit() || sister.permit())
内化到 家庭的 业务域 中
逻辑为:
若是家庭赞成..
若是家庭不一样意..
复制代码
if(permit()){
//去同窗家写做业
}else{
//放学后回家
}
private boolean permit(Father father,Mather mather,GrandPa grandPa,......){
return father.permit() || mather.permit() || grandPa.permit() || grandMa.permit() || brother.permit() || sister.permit();
}
将逻辑直接私有化 封装起来
1. 私有化后单元测试将覆盖不到
2. 私有化后相同的permit()的业务将散落在系统的各个角落
3. 私有化后permit()的入口不惟一 维护及其不方便
复制代码
小江同窗 完成做业后 才能够吃饭ui
完成做业的断定规则为 学习时间>1小时this
Student xiaojiang;
if(xiaojiang.studyTime > 1){
//完成做业 准备吃饭
}
代码较短 读起来也不费劲
但读起来仍是要进行思惟转换
学习时间大于1小时 等于 完成做业
-----------------------------------------
class Student{
private String name;
private Integer age;
private Integer studyTime;
private .......;
添加方法 完成做业的断定
public Boolean finished(){
if(this.studyTime > 1){
return Boolean.True;
}
return Boolean.False;
}
}
Student xiaojiang;
if(xiaojiang.finished()){
//完成做业 准备吃饭
}
代码阅读逻辑为:
小江是否完成做业
是: 吃饭
否: 其余
至于 什么是我完成做业 未来业务变成 年龄>18 都没问题
主干逻辑不变,只需修改 学生域下的finished() 的业务表述
复制代码
用封装消灭长代码 代码可读性提高spa
恰当业务模型上的对外开发的封装是负责任的封装code
私有化的封装是不建议的封装cdn
代码必须私有封装,不私有化无解,不妨跳出当前业务模型,上帝视角判断下当前模型是否合适
一些文件业务等其余 涉密的 要 private