如何处理过长的函数

最好,最持久的程序,里面的函数都比较短。
更好的表达力,更好的分享,更好的选择 —— 都是通过小函数来实现的

因此,有这样一个原则:当想给某个函数写注释的时候,都将要说明的东西写进一个独立的函数中。

百分之 99% 的时候,要把函数变短,只需使用“提炼函数” 为何,及如何提炼一个函数

可是,如果函数内有大量参数临时变量,会对你的函数提取形成障碍,比如你需要将参数传递给提炼出来的新函数,这时候,你需要一些技巧

你可以使用Replace Temp with Query来替代临时变量
使用Introduce Parameter ObjectPerserve Whole Object减少过长的参数
另外,还有一个杀手锏——Replace Function with Command

Replace Temp with Query

以查询替代临时变量

中使用效果最好,类更适合承载数据与行为的组合

Query在类中为get Value()

​❗️​ 只适用于只读变量,如果某个变量被多次赋值,则将这些计算代码一并提炼到函数中,如下方的discountFactor

在这里插入图片描述
确保提炼的函数无副作用,否则使用Separate Query with Modifier

Separate Query with Modifier

查询函数副作用函数分离
在这里插入图片描述

Replace Parameter with Query

参数替代类似
在这里插入图片描述

Introduce Parameter Object

引入参数对象(该对象也可是类,或者说使用类更好,因为数据行为能更好的结合)
降低参数的数量,并使数据之间的关系变得更加清晰

用法:将共有行为的数据放入一个类中

如下,找出温度在(50~55)之外的元素

在这里插入图片描述

Perserve Whole Object

保持对象完整

传递整个对象能够更好地应对变化,同时还能缩短参数列表

在这里插入图片描述

Replace Function with Command

以命令取代函数

这里的命令指一个对象(类也行),该对象封装了一个请求

在类中,将参数的传递放入构造器中而非某个方法中,可以非常直观的得出该类需要那些参数

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值