改善代码设计 — 处理概括关系(Dealing with Generalization)
摘要:1. Pull Up Field (提升值域) 解释: 如果发现每个子类都拥有相同的某个值域, 那么使用 Pull Up Field 将这个值域提升到父类中去. 冲动前: 冲动后: 2. Pull Up Method (提升函数) 解释: 如果每个子类都有相同的某个函数, 这个函数做同样的...
阅读全文
改善代码设计 — 简化函数调用(Making Method Calls Simpler)
摘要:1. Parameterize Method (令函数携带参数) 解释: "令函数携带参数" 并不是简单的让你在函数里加上参数, 如果函数里需要某个参数, 我们谁都会加上它. 你可能发现这样的几个函数: 它们做着类似的事情, 只是因为极少的几个值导致函数的策略不同, 这时可以使用 Paramet...
阅读全文
改善代码设计 — 组织好你的数据(Composing Data)
摘要:1. Self Encapsulate Field (自封装值域) 解释: 大部分类 (class) 中都会有一些值域 (field), 随之还会有一些方法使用到了这些值域. "如果调用这些值域"这个问题分为两种观点: 1. 应该直接调用它们 2. 应该通过访问函数调用它们. 我觉得大部分情况下...
阅读全文
改善代码设计 — 优化物件之间的特性(Moving Features Between Objects)
摘要:1. Move Method (函数搬家) 解释: 如果 ClassA 的某个函数对ClassB 有过多的依赖, 可以考虑将这个函数搬到 ClassB 中, 在 ClassA 的这个函数中直接调用 ClassB中这个函数的返回值. 这样做的好处是减少物件与物件之间的耦合度, 很多情况下这样做更利于...
阅读全文
改善代码设计 — 优化函数的构成(Composing Methods)
摘要:1. Extract Method (提炼函数) 解释: 如果发现一个函数的代码很长, 很可能的一种情况是这个函数做了很多事情, 找找看函数中有没有注释, 往往注释都是为了解释下面一块代码做的什么事情, 可以考虑将这块代码提炼(Extract)成一个独立的函数. 这样做的好处不言而喻, 是面向对...
阅读全文
改善代码设计 — 简化条件表达式(Simplifying Conditional Expressions)
摘要:1. Decompose Conditional (分解条件式) 解释: "复杂的条件逻辑" 是导致复杂性上升最常见的地方, "条件表达式中堆积的计算过程", "条件式表达得不简洁"等等都是造成复杂的原因. Decompose Conditional 用于将这些复杂的元素从条件表达式中分离出去, ...
阅读全文
关于系统重构
摘要:很多人在讨论为什么京东商城至今还在用.net平台,很多人表示不理解,至于原因网上众说纷纭, 这里面涉及到的问题或许也不是三五个高手或者非专业人士所能理解的,就像12306那样。 很多平台或者公司最开始的时候资金不足,找几个工程师,在不求质量,只求效率的模式下迅速搭建一个平台,或者直接找网站建设...
阅读全文