《重构——改善既有代码的设计》读书笔记(六)

一、重新组织数据

1.数据封装:例如使用某个数据集,应该添加为其加入和删除元素的函数,而不是直接对数据集进行修改

2.当有一个数据项与其他数据一起使用才能体现其意义时,用对象来取代数据值;

3.正确区分使用值对象与引用对象;

4.数组容纳的内容并非是一系列相似的值时,

5.以对象取代数组;

6.复制被监视数据

7.两个类都需要使用彼此的特性,考虑使用反向指针实现双向关联

8.两个类之间只有一个类会用到另一个类的特性,则应建立单向关联

9.少使用没有清晰定义的值:

10.合理运用字段和子类

这一部分是书中第八章《重新组织数据》的内容,我基本也没写什么,就是把小标题复制了一下。。。这一章里面理论上的内容实际也就是这些小标题了,因为这一章里含有大量的代码实例,其中主要是靠这些代码来详细的解释这些重构手法,其中还运用了多种设计模式,我也总结不太好,如果我这篇文章有人看到的话我强烈建议你去把原书看一下吧。。。。

 

二、条件表达式处理

1.面向对象的程序中某处出现多个复杂分支,首先考虑以多态处理,如果不需要或不能用多态也要为每个分支建立一个接口。

2.多个分支条件最终走向同一种结果或处理时,多使用“或”和“并”来减少分支,当分支无法合并时也应将最终相同的处理部分提炼出来引导各分支代码走向这部分处理。

3.尽可能减少控制标志。

4.为特殊条件创立“卫语句”:卫语句就是对某个条件的特殊处理;按照作者的描述,当某个分支条件有多个普通可能成立的条件a1到an,还有一个特殊的成立极其罕见的条件b1时,不要将b1与a系列放在同一队if..else 中,而是单独建立一个if来判断。但我觉得。。。这样大概清晰了一点可是也会多一个判断而对程序造成额外的开销,虽然一个判断也没多少影响,但在某些效率至上的情境下,可能还是省一点是一点。

5.条件表达式反转:就是每个条件成立所执行的代码要选短的。例如有这样一段代码

                                                 if(a > 0){....}      代码段①

                                                 return;

这段代码的意思是当a大于0时,我们要处理一系列代码,而a大于0不成立时就结束;那么正确的写法应该为:

                                                 if(a <= 0){return;}

                                                  ....              代码段①

这样写的好处是代码段①少了一层递进

6.建立空对象来替代空值的判断

7.多使用断言ASSERT

 

 

这本书的读书笔记写到这里感觉遇到了瓶颈,就是读到这里的时候似乎很难写出一些有用的笔记,一方面是因为自己表达能力不够强,一方面是因为作者总结的很到位感觉自己写什么都像在复制书中的话,还有就是可能自己的理解不够深吧,但也还是坚持写下来吧。。。虽然写出来的东西意义并不大。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值