简明代码和代码重构
文章平均质量分 51
姬世霆
初入博客,希望可以坚持下去,结交更多的朋友,学到更多东西。
展开
-
清晰代码和代码重构大纲
最近学习Clean Code 和重构,做了笔记,打算做一个专栏。这个是第一章,算是大纲吧,后续有还有更新。清晰代码和代码重构 1、简明、清晰的展示 2、简化逻辑和循环 3、重新组织代码 4、可读性测试 使测试易于维护和阅读 让测试的错误信息更可读 选择好的测试输入:选择一组能完整的、简单的被测数据进行测试 当一个功能需要进行多项测原创 2016-04-06 12:18:03 · 830 阅读 · 0 评论 -
7、大型重构
1、Tease Apart Inheritance(梳理并分解继承体系) 如果某个继承体系同时承担两项责任,则建立两个继承体系,并通过委托关系,让其中一个可以调用另一个。 2、Convert Procedural Design To Objects(将过程化设计转化为对象设计) 如果你手上有一些传统过程化风格的代码,则将数据记录变成对象,将大块的行原创 2016-04-06 12:49:18 · 1127 阅读 · 0 评论 -
6、处理概括关系
1、Pull Up Field(字段上移) 两个子类拥有相同的字段,则该字段移至超类。 2、Pull Up Method(函数上移) 有些函数,在各个子类中产生完全相同的结果,则将函数移至超类。 3、Pull Up Constructor Body(构造函数本体上移) 你在各个子类中拥有一些构造函数,但他们的本体几乎原创 2016-04-06 12:48:23 · 1075 阅读 · 0 评论 -
5、简化函数调用
1、Rename Method(函数改名) 2、Add Parameter (添加参数) 3、Remove Parameter(移除参数) 4、Separate Query from Modifier(将查询函数和修改函数分离) 某个函数即返回对象状态值,又修改对象状态,这样子的话,建议建立两个不同的函数,其中一个负责查询,另一个负责修改原创 2016-04-06 12:47:39 · 1094 阅读 · 0 评论 -
4、简化条件表达式
1、Decompose Conditional(分解条件表达式) 将if表达式抽离成函数,然后将if、else中的代码段提炼为各自独立的函数。 2、Consolidate Conditional Expression(合并条件表达式) 如果一系列条件测试都得到相同结果,那么将这些测试合并为一个条件表达式,并将这个条件表达式提炼为一个独立函数。原创 2016-04-06 12:46:34 · 1812 阅读 · 0 评论 -
3、在对象之间搬移特性
1、Move Method(搬移函数) 如果一个类有太多行为,或如果一个类与另一个类有太多合作而形成高度耦合,则考虑搬移函数。 这类函数有这种特点:使用另一个对象的次数比使用自己所驻对象的次数还多。 2、Move Field(搬移字段) 和搬移函数类似,某个字段被其所驻之外的另一个类类更多的用到,则考虑将该字段移到那个类中。 3、Ex原创 2016-04-06 12:45:41 · 957 阅读 · 0 评论 -
2、重新组织函数
1、Extract Method(提炼函数) 1、无局部变量 2、有局部变量 1、被提炼代码段只是读取变量的值,并不修改他们。 简单传给目标函数 2、被提炼代码段对局部变量再赋值 1、如果发现源函数的参数被赋值,使用Remove Assignments to Para原创 2016-04-06 12:44:14 · 919 阅读 · 0 评论 -
1、重新组织数据
1、Self Encapsulate Field(自封装字段) 在子类中需要修改父类的字段变化后的值时,考虑使用自封装,然后给get/set方法,其他情况可以直接使用访问值的形式。 2、Replace Data Value With Object(以对象取代数据值) 当原来的简单数据项不再表示简单的情况,比如要对他进行格式化输出等,则考虑将数据项变原创 2016-04-06 12:42:54 · 1489 阅读 · 0 评论 -
3、重新组织代码
积极发现并抽取出与主目的不相关的子逻辑: 1、如果足够的行数在解决与主目的不相关的问题,则抽取相应的方法 2、每行代码都询问是否是直接为了目标而工作 将一般代码和函数主要目的代码分开, 步骤: 1、列出所有要做的功能 2、将任务拆分到不同函数 橡皮鸭技术: 1、像对着同事一样描述代码要做什么 2、注意描述中所用的关键字和短语 3、写出描述所匹配的代码 保持小的代码库: 1、创建越原创 2016-04-06 12:21:49 · 523 阅读 · 0 评论 -
代码的坏味道
下面分类是我自己归纳的,如有不足之处,可以发评论,如果的确这样,我会尽快更新内容。 变量的坏现象 Data Clumps(数据泥团) Primitive Obsession(基本类型偏执) Speculative Generality (夸夸其谈未来性) Temporary Field (令人迷惑的临时变量) 函数的坏味道 Long M原创 2016-04-06 12:24:07 · 1723 阅读 · 0 评论 -
2、简化逻辑和循环
1、简化逻辑 在if条件句中,将被询问的表达式放在左侧,右侧用来放置常量,比如 if(heigh > 10 ) 在if中,一般以这种信息安排顺序: 1、可以快速判断需要退出控制流的 2、处理正确逻辑 3、处理简单情况 4、处理有趣的或者可疑的 5、采用设计模式 2、简化循环 建议使用while循环或者for, 尽可能的减少循环嵌套( 1、提早返回 2、抽取循环内原创 2016-04-06 12:20:24 · 842 阅读 · 0 评论 -
1、简明、清晰的展示
1、关于命名 总纲: 选择专业的词、避免泛泛而谈的词、用具体的名次来代替抽象的名词、 使用前缀或者后缀来附带信息(比如heght_m,高度以米来度量)、决定名字长度、 利用名字格式来表达含义 选择专业的词:比如常用的getPages()就不如用FetchPages()或者DownLoadPages()好,int size 就没有int heght好。 在循环迭代中,可以使用默认原创 2016-04-06 12:19:22 · 691 阅读 · 0 评论 -
如何组织代码
1、重新组织数据 1、Self Encapsulate Field(自封装字段) 在子类中需要修改父类的字段变化后的值时,考虑使用自封装,然后给get/set方法,其他情况可以直接使用访问值的形式。 2、Replace Data Value With Object(以对象取代数据值) 当原来的简单数据项不再表示简单的情况,比如要对他进行格式化输出等,原创 2016-04-06 12:29:45 · 1458 阅读 · 0 评论