为什么我们要创建函数 & 什么是好的函数设计

什么时候才会创建一个函数呢?


如果问你这个问题你能答上来吗? 学习语言这么多年了,我语法都熟悉,会创建函数。但是问我什么情况下,需要创建一个函数。直接有点晕。


整理一下思路:我为什么写函数呢?

0 业务需要:不同的业务需要不同的操作,每个操作对应一个函数。如对一个系统可以读数据,也可以写数据。那么我会写两个不同的函数。

1 降低复杂度: 面对一个需求,我不可能在一个函数里面全部实现。否则,会有几十万行的函数吧。当业务之间的关系不大的时候能成为独立的一块的时候,为了降低复杂度,我会拆分成不同的函数。

2 抽象思考:面向过程的设计中,任务就是按照顺序执行的函数。如果我一个表达式一个表达式的写,那么我的思路会局限在在表达式层面,陷入细节无法自拔。如果我写函数来代替一段代码,我的思路会非常清楚,所以可以帮助我进行思考设计。

3 可读性:表达式是正儿八经的机器语言,计算机读的时候,一个字爽。但是我们人类是很痛苦的,程序员已经被计算机奴役,要在人类和计算机之间做翻译,人奸。但是函数是用自然语言命名的,多写函数,你的代码会非常清晰易懂。

    3.1 要求函数必须短小:越短小的函数,越容易读懂。当然这里的短小不一定易懂,可以用圈复杂度来衡量函数内部是否复杂。同时如果有大量的短小函数,函数名字比较难以命名,而且会有大量的长函数名字

   3.2 复杂表达式,可以用函数来代替。比如if(A>B  && C>D && E<F ||A*C > B*F)直接替换成函数

4 消除重复代码:如果代码中很多重复,那么抽取成单独的函数。易读,易维护。

5 函数做到了隔离隐藏,因为它是独立的一块,同样类也有类似的好处。隔离使得两部分(调用者和被调用者)独立变化,隐藏函数内部实现,使得可以改变函数内部实现,而不改变函数功能。

6 单一职能原则:这个在设计类的时候,也有相同的原则。

7 语法需要:比如必须有main函数,所以必须至少要创建一个函数吧。

8 递归需要:完成递归,必须有函数


************************************************************************************************************************************

什么样子的函数是好的设计呢?

根据以上分析,很容易得到:

1 短小:不能超过50行,圈复杂度不要超过5.

2 越多越好:短小的一个直接结果

3 单一:一个函数功能越单一,越可能短小,越可能简单不复杂,越可能易读。

4 函数名字要好:易读啊

5 不要重复自己:有些函数相似度达到90%的,名字不好起,还难以维护。要拆分为不同的函数。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值