代码整洁之道读书笔记--类
来源:互联网 发布:找半挂车的软件 编辑:程序博客网 时间:2024/06/14 04:58
1.类的组织
遵循标准的Java约定,类应该从一组变量列表开始。如果有公共静态常量,应该先出现。然后是私有静态变量,以及私有实体变量。很少会有公共变量。
公共函数应跟在变量列表之后。把由某个公共函数调用的私有工具函数紧随在该公共函数后面,这符合了自顶向下原则。
所以满足这些约定的一个类大概长成下面这样:
public class SomeClass{ public 公共静态常量; private 私有静态变量; private 私有实体变量; public 公共函数1() { 调用私有工具函数1(); } private 私有工具函数1() { } public 公共函数2() { 调用私有工具函数2(); } private 私有工具函数2() { } ......}
2.类应该短小
对于函数,我们通过计算代码行衡量大小;对于类,我们则是通过计算权责来衡量类的大小。
类的名称应该描述其权责,类名正是判断类的长度的第一个手段。如果无法为某个类命以精确的名称,这个类大概就太长了。类名越含混,该类越有可能拥有过多的权责。例如,如果类名中包含含义模糊的词,如Processor、Manager、Super,这种现象往往说明有不恰当的权责聚集情况存在。在类名描述中不能出现”若(if)”、”与(and)”、”或(or)”或者”但(but)”等词汇。例如:类SuperDashboard的声明如下:
public class SuperDashboard extends JFrame implements MetaDataUser{ public Component getLastFocusedComponent() public void setLastFocused(Component lashFocused) public int getMajorVersionNumber() public int getMinorVersionNumber() public int getBuildNumber()}
SuperDashboard的描述如下:SuperDashboard提供了对最后拥有焦点的组件的访问能力,我们还能通过它跟踪版本号和构建序列号。”还能”二字正好提示了SuperDashboard类有太多权责。
3.单一权责原则(SRP)
单一权责原则(SRP)认为,类或模块应该有且只有一条加以修改的理由。例如上面所述的貌似很小的SuperDashboard类有两条加以修改的理由。首先,它跟踪大概会随软件每次发布而更新的版本信息;第二,它管理Java Swing组件。每次修改Swing代码时,都要更新版本号。这时可以将全部三个处理版本信息的SuperDashboard方法拆解到名为Version的类中。如下所示:
public class Version{ public int getMajorVersionNumber() public int getMinorVersionNumber() public int getBuildNumber()}
系统应该由许多短小的类而不是少量巨大的类组成。每个小类封装一个权责,只有一个修改的原因,并与少数其他类一起协同达成期望的系统行为。
4.内聚
类应该只有少量实体变量。类中的每个方法都应该操作一个或多个这种变量。通常而言,方法操作的变量越多,就越黏聚到类上。我们希望内聚性保持在较高位置。内聚性高,意味着类中的方法和变量互相依赖,互相结合成一个逻辑整体。
当类丧失了内聚性,就拆分它!所以,将大函数拆分为许多小函数,往往也是将类拆分为许多个小类的时机。程序会更有组织,也会拥有更为透明的结构。
- 代码整洁之道读书笔记--类
- 《代码整洁之道》读书笔记
- 代码整洁之道读书笔记
- 《代码整洁之道》读书笔记
- 代码整洁之道读书笔记
- 《代码整洁之道》读书笔记
- 【读书笔记】代码整洁之道
- 代码整洁之道读书笔记
- 代码整洁之道 读书笔记
- 《代码整洁之道》读书笔记
- 代码整洁之道读书笔记
- 《代码整洁之道》读书笔记
- <读书笔记> 代码整洁之道
- 代码整洁之道 读书笔记
- 《代码整洁之道》读书笔记
- 《代码整洁之道》读书笔记
- 《代码整洁之道》读书笔记
- 《代码整洁之道》读书笔记
- 解决C/C++ 头文件相互包含 问题的方法
- OC习题和答案3
- 二分查找入门
- zhphpframework 说明文档
- Cordova集成支付宝支付
- 代码整洁之道读书笔记--类
- 【树状数组】poj1794
- matlab获取标量
- 《从零开始学Swift》学习笔记(Day 50)——扩展计算属性、方法
- Java环境变量的配置
- 第12篇 文件和注册表操作
- 关于activity转屏 上一个activity onDestory的问题
- 9年一直在折腾,这群男人和女人想干啥
- android camera HAL v3.0中元数据及其控制