《代码整洁之道》读书笔记3

最近加班比较多,太监了一小下...


 第三章 函数

感觉这章有些理想化,因为很多内容虽然会使代码好看,但是需要花费时间的(即使有很良好的编码习惯的人),具体的还是在各个要点中讨论。


1. 函数尽量短小

书中建议的是一个函数最多20行,一行150个字符,个人感觉150个字符不好数,直接用默认字体,但是不超过1024像素,也就是现在最差的屏幕也不需要横拉就能显示完全。20行封顶很难做到,虽然多层封装函数就行,但是就是又涉及那个时间问题,一般人有感觉都会一直写下去,其实我建议至少养成良好的空行习惯,每个空行分隔的部分,都是可以封装成短函数的部分,当然这样,函数层数太多也不行的,还是要平时尽量控制下。


2. 函数只做一件事

其实和上边的也类似,基本上只做一件事的函数基本长不了,所以也可以用空行来区分,但是呢,一个函数即使不能只做一件事,到那时这个函数必须做相关的几件事,而且可以通过文件名和注释等来明确函数的功能。


3. 函数都是一个抽象层级的

简单说就是函数划分的层次要合理,比如一个函数,要获取时间和地址信息,直接分两次获取就行了,而不能先获取时间,再获取城市的地址,再或者街道地址,再获取门牌号,后面三个应该封装成一个函数,这个也就是TO式程序。(TO)为了获取信息,要获取时间和地址。(TO)为了获取地址,需要获取城市,街道,门派。这个划分抽象层其实有时候很难,所以要设计期要设计好了,借助工具尽量划分模块。


4. switch语句

switch的存在基本就说明他不能满足只做一件事,所以呢,一般一个包含switch的函数只包含switch就行,或者用设计模式中的工厂模式,用抽象工厂来隐藏switch,用工厂的接口来分配工作。


5.使用描述性的名称,具体看上一章就行。


6.函数参数越少越好

虽然作者建议最好没有参数最好,但是大家都知道,这个只是面向对象的情况,只要类设计的好,成员函数都用成员变量,那样就零函数参数了,但是对于初始化函数,set函数,和一些需要外部输入的函数,还是需要一个参数两个参数的,比如fileOpen。如果一个函数有很多函数,就考虑封装成一个类。可变参数列表也是这样的。


7. 函数无副作用

函数只做一件事,但是可能改变了多个成员,这样就可能导致副作用。比如一个函数是确认密码正确然后执行初始化,一定不能单纯命名为checkpassword,当然这个函数可能是违法了只做一个事的原则。


8.分隔指令

感觉这个也是只做一件事的特殊情况,if(set("username","LUAN"))改成if(attrubuteExists("username")){setAttribute("username","LUAN');}


9. 使用异常处理代替返回错误码

这个容易理解,因为错误处理就是一件事,但是很多新人没有使用异常处理的习惯,比如我(笑),我建议就是至少把错误封装成一个专门的函数或者宏。


10. 结构化编程

函数一个入口,一个出口,这样基本职能有一个return,不能有break,continue,不过做到这点基本很难,作者都承认这个作用不大了(笑),不过咱们满足上面的一些条件,基本这些问题比较少,也没大影响。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值