1、Rename Method 重新命名函数
- 函数的名称未能揭示函数的用途。
- 修改函数名称。
- 考虑应该给这个函数写上一句怎样的注释,然后想办法讲注释编程函数的名称。
2、Add Parameter 添加函数
- 某个函数需要从调用端得到更多信息。
- 尽量不要增加参数,有可能带来坏味。
3、Remove Parameter
4、Separate Qrevy From Modifier 将查询函数和修改函数分离
- 某个函数既返回对象状态值,又修改对象状态(State)。
- 建立两个不同的函数,其中一个负责查询,另一个负责修改。
5、Paraterice Method 令函数携带参数
- 参数的作用为提供变化的接口,可变的东西。
- 若干函数作了类似的工作,但在函数本体中却包含了不同的值。
- 建立单一函数,以参数表达那些不同的值。
6、Replace Pararmeter With Explicit Methods 以明确函数取代参数
- 函数完全取决于参数值而采取不同反应,这里可以理解为不同的动作行为。
- 以明确函数取代参数,可以将不同的业务类型提取出来。
- 还要看和上层的接口定义。
- 如果以参数值觉得函数行为,那么函数用户不但需要观察该函数,而且还要判断参数值是否合法。
7、Preserve Whole Object 保持对象完整
- 参数过多,而且都来自同一个对象,那么将整个对象传入。
- 可以使参数列更稳固,不变化。
- 提供代码的可读性。
- 如果该对象原本与该函数没有依赖关系,这样容易破坏层次关系。
8、Replace Pararmeter With Methods 以明确函数取代参数
- 接受该参数的函数也可以调用前一个函数,让参数接受存者去除该项参数,并直接调用前一个函数。
- 如果调用端通过“其所属对象内部的另一个函数”来计算参数,并在计算过程中“未曾引用调用端的其他参数”,那么你就应该可以将这个计算过程转移到被调用端内,从而去除该项参数。
9、Remove Setting Method 移除设值函数
- CLASS中某个值域,应该在对象初创时被设值,然后就不再改变,去掉该值域的所有设值函数(Setter)。
- 如果为某个值域提供了Setter,这就暗示了这个值域可以被改变。
- 如果Subclass需要对Superclass的Private变量赋初值,解决方法就是使用Superclass构造函数。
10、Replace Constructor With Factory Method 以“工厂模式”取代构造函数
- 简化创建过程,封装创建逻辑。
- 在Subclassing过程中以Factory Method取代type code。
- 在父类中提供了子类的创建过程,不用额外类说明,而且类型一致。
11、Replace Error Code With Exception 以异常取代错误码
- 对于大多数正常情况下做错误判断,显得多余。
- 某个函数返回一个特定的代码(Special Code),以表示某种错误情况,改用异常(Exception)。
- 这种方式更好地将“普通程序”和“错误处理”分开了,使得程序更容易理解。
12、Replace Exception With Test 以测试取代正常
- 面对一个“调用者可预先加以检查”的条件,抛出一个异常,修改调用者,使它在调用函数之前先做检查。
分享到:
相关推荐
AsyncCalls(异步调用函数),Delphi异步调用函数的单元和例子
记录函数调用。 安装 通过 git 从 github 下载最新版本: git clone https://github.com/sttts/log-calls.git 或使用 : npm install log-calls 或使用 for Titanium: gittio install log-calls 用法 要使用 ...
五年级英语上册 unit4 Making Phone Calls Lesson8教案 闽教版.doc
五年级英语上册 Unit4 Making Phone Calls Lesson7教案 闽教版.doc
实验4-1设计一个计算阶乘的程序实验4-2在实验4-1的基础上,设计一个计算ex的程序
很好文章,介绍PowerPC 的函数调用,全E文,讲的很详细。
下面是一个简单的动态函数调用范例 <html> <head> <title>Dynamic Function Calls</title> </head> <body> <?php function sayHello() { echo "Hello "; } $function_...
第 10 章:简化函数调用(Making Method Calls Simpler) 第 11 章:处理概括关系(Dealing with Generalization) 第 12 章:大型重构(Big Refactorings, by Kent Beck and Martin Fowler) 第 13 章:...
高亮函数调用 这个包在函数调用中突出显示函数符号。 这使它们从其他符号中脱颖而出,从而可以轻松查看对其他函数的调用位置。 它还有助于减少拼写错误,因为当您输入函数名称时,如果输入正确,它会带有下划线。 ...
WeatherAPI_calls:WeatherApplication API调用示例可帮助自己了解API调用
如下代码定义并应用一个函数装饰器,来统计对装饰的函数的调用次数,并且针对每一次调用打印跟踪信息。 class tracer: def __init__(self,func): self.calls = 0 self.func = func def __call__(self,*args): ...
跟踪C++ 程序运行时跟踪工具,用于函数调用,花费时间安装:如果使用root用户,可以使用make install 如果使用普通用户,安装后使用make,会出现libawtrace.so和awtrace两个文件,如果使用make install,libawtrace....
对于ARM体系来说,不同语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(ARM-Thumb Procedure CallStandard),ATPCS主要是定义了函数呼叫时参数的传递规则以及如何从函数返回
安装将此行添加到您的应用程序的Gemfile中: gem 'trace_calls' 然后执行: $ bundle或将其自己安装为: $ gem install trace_calls用法require 'open-uri'require 'trace_calls'TraceCalls::on do open('...
因此,每个调用都位于文件的根目录,而且是IIFE中在启动时执行的调用(包括嵌套调用)。 var a = topLevelCall ( )b = function ( ) { noTopLevelCall ( )}topLevelIIFEs = ( function ( ) { var c = ( function
mt4编程手册,精美排版,带目录书签。 内容目录 语法 [Syntax] 1 数据类型 [Data types] 1 ...技术指标调用 [Technical Indicator calls] 91 交易函数 [Trading Functions] 107 窗口函数 [Window Functions] 115
Asynchronous Procedure Calls ,也就是异步过程调用,这份文档是内核中APC的详尽介绍,值得一看
2 System calls(系统调用) System calls (functions provided by the kernel)系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件) 3 Libraryfunctions(库函数) Library ...
vk-api-calls 适用于Node.js和io.js的另一个VK API包装器。 :red_exclamation_mark: 尽管此模块在npm上发布并具有版本1,但仍在大量构建中。 请谨慎使用它,或等待本周晚些时候发布的2.0.0 。 特征 简单认证 通过...
Libraries and System Calls Reference (库和系统调用参考) Complete documentation on the C-callable TNT DOS-Extender system calls in DOSX32.LIB, the C-callable MS-DOS and BIOS system calls in DOS32.LIB...