《代码整洁之道》读书笔记----第三章函数

写代码的过程使用一种语言描述一个系统故事。
写的过程,保持代码的精确,清晰,是能讲好故事的基础。

函数,即方法名,是一个动词。
1.短小
函数体应该保持短小,最好每个函数体的封顶上限应该是20行。

2.if/else while等语句中
块内尽量调用“有意义签名”的函数,意味着函数不应该有嵌套结构,缩进不应该多与一层或两层。

3.只做一件事
函数中的语句,应该是一抽象层使用几条指令处理或者使用下层抽象进行处理。一个只做一件事的函数,无法很合理的切分成几个部分立即。
举个例子
睡觉(){躺床上();闭眼();}
起床(){睁眼();下床();}
睡觉中,如果还含有起床这一个函数,就违反了,只做一件事的原则。
因为睡觉和起床是处于一个抽象层的东西。
另外如果闭眼中含有躺床上的函数实现,也违反了只做一件事的原则。
因为闭眼和躺床上也是处于一个抽象层的东西。
可以使用To来进行判断函数是否只做一件事。
To 目的(睡觉),应该先进行函数(躺床上),然后进行函数(闭眼)。
To 目的(躺床上),应该进行函数(…)
To目的(闭眼),应该进行函数(…)

满足向下规则:自定向下的阅读顺序
函数{函数1;函数2;}
函数1{函数①;函数②;}
函数①{函数Ⅰ;函数Ⅱ;}

函数2{函数③;函数④;}
函数③{函数Ⅲ;函数Ⅳ;}

函数1中不能包含函数2的实现…

4.switch,switch能够使用情况应该是配合enum来使用,来重写多个if else的情况。并且switch天生就是用来做多件事情的。能避免使用就避免使用。
有些switch情况是可以使用多态实现的就是用多态实现。

5.使用具有描述性的名称
长而具有描述的名称,要比短而令人费解的名称好。长而具有描述性的名称,要比描述性的长注释好。使用命名约定也是团队开发中必不可少的。
命名方式要保持一致,使用与模块一脉相承的短语、名词和动词来给函数命名。

6.函数参数
理想的情况是无参,其次是一,再次是二,避免使用三个参数及以上
参数是带有概念性的东西。避免使用输出参数,输出参数使用返回值代替。

一元函数:
一个函数传入一个参数,对这个参数有两种常用的用途,进行询问,或者进行操作。
当然使用delegate,作为参数的时候,或者函数作为事件的处理方法时,参数的使用例外。
避免使用bool作为参数传进去
例如:
func(bool){ if (bool){function①;}else {function②;}}应该把这个func拆成function① function②根据bool 进行选择判断

二元函数:除了必要否则,尽量使用一些机制将其转换成一元函数。

三元函数:标识参数中有一些参数可以封装成一个类,在当成参数传进来。

一个参数的使用动词+名词
多个参数的 使用动词+名词+(动词/介词)+名词的形式

7.操作与询问,应该分开

8.错误代码交予异常处理

9.异常处理应该从函数主体部分抽离处理,另外形成函数
异常处理也是一件事。

10.重复使用的指令,应该使用函数封装起来,进行复用。

11.避免使用goto

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值