重构系列-函数

1 短小精悍

  • 代码块和缩进
    if,else,while语句等其中代码块应该只用一行,改行大抵是一个函数调用的语句

2 只做一件事
要判断函数是否不只做一件事,判断的方法是是否能再拆出一个函数。

3 每个函数一个抽象层级
函数中的语句都要在同一抽象层级。读程序的时候就像一系列TO起头的段落,每一段都描述当前抽象层级,并引用下一抽象层级后续TO起头段落。

4 switch语句
在这里插入图片描述
上图的问题:

  • 太长,出现新的的雇员类型,会变得更长。
  • 明显做了不止一件事
  • 违反单一职责原则,因为有好几个修改他的理由
  • 违反开闭原则,每当添加新类型的时候,就必须修改
    解决方案 ,是将switch埋到抽象工厂底下,不让任何人看到,该工厂使用switch语句为employee的 派生物创建适当的实体。

修改为
在这里插入图片描述

5 使用描述性名称
沃德原则“如果每一个例程都让你感到深合已意,那就是整洁代码”

6 函数参数
最理想的参数数量是零。有足够特殊理由才能用多参数函数。
多参数要封装类

7 分隔指令与询问
函数应该修改某对象的状态,或是返回该对象的有关信息,两样都干的话会导致混乱

public boolean set(String attribute,String value);
//可能会导致一下的使用
ifset("username","lishimin")

解决方案把指令与询问分隔开

if(attributeExists("username")){
setAttribute("username","lishimin");
}

8 使用异常代替返回码

9 抽离trycatch代码块
trycatch代码块 把错误处理与正确流程混为一谈。
其实我认为最好的办法搞一个全局异常处理器,对于有可能异常的代码块,直接抛异常就可以了

10 消除重复

11 结构化 编程
Dijkstra认为 每个函数,函数中的每个代码块都应该只有一个入口一个出口。意味着每隔函数中只能有一个return语句,循环中不能有break或者continue语句.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大道至简@EveryDay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值