读书笔记 《代码整洁之道》类
类的组织
类是一组变量,出现的顺序是
- 公共静态常量
- 私有静态常量
- 私有实体变量
- 公共函数
- 公共函数的私有工具函数
类应该短小
类应该尽量小,函数的小一半由行数控制。对于类来说,应该从类的职责角度来 尽量小。
类的职责应该与类的名称保持一致,如果这个类无法精确命名,就说明这个类的职责太多了,类的命名中尽量不要包含 if,and,or,but 之类的连接词
单一权责原则
单一权责认为一个类 有且仅有一条修改的理由,这样既给出了类的权责定义,又限制了它的长度。
每个达到一定规模的系统 都会有大量的逻辑性和复杂性,要管理这种庞大的代码,就需要让开发知道在哪里找到东西,所以 这个时候 拥有巨大,多目的类的系统更能让我们达到目的。
内聚
内聚性指的是类中的变量和方法之间的结合程度,如果一个类中的每个变量都被方法用到了,那么这个类就有很高的内聚性。
(那么同理对于组件来说,如果组件里的data的变量 只在某个方法中用到了 那么其实就是这个组件的内聚性就不高)
保持内聚 就能得到更小的类(步骤)
1.为了拆分大函数为功能更单一的小函数,我们可能会给这些函数提供入参,更好的办法是 将这些入参都放在类的公共变量里去
2.这时候 类里面某些变量可能只为了某一些小函数存在,内聚性不高。
3.此时我们自然而然的把这些变量和对应的小函数摘出去,就能拆分成更小的类了。
为了修改而组织(开放闭合原则)
类应该对扩展开放,对修改封闭。这句话的意思是 如果有一个类,你想新增一个公共功能,那你可以修改这个类的代码。但是如果你想修改某个功能让他能多支持某种场景的话,你就需要写一个子类,用继承的这个子类来处理你要做的逻辑,不要去碰原来的逻辑。
隔离修改(依赖倒置原则)
为了降低修改代码的风险,减少测试成本,响应需求的频繁变动。 我们需要将类依赖于抽象的接口,而不是具体细节的函数,比如说某个类里面有个函数a(),为了修改这个a(),我们可以再创建一个接口a1(), 要加的那部分逻辑可以放在这个a1()里面,外界要用的时候 直接调用a1(). 这样a()是干净的,是被隔离开的。 这样也叫做解耦。这样复用度会更高。
依赖倒置原则认为,类应该依赖于抽象,而不是具体。