重构手法之简化函数调用【1】
返回总目录
本小节目录
- Rename Method(函数改名)
- Add Parameter(添加参数)
- Remove Parameter(移除参数)
1Rename Method(函数改名)
概要
函数的名称未能揭示函数的用途。
修改函数的名称。
动机
将复杂的处理过程分解成小函数是良好的编程风格。但是,如果做的不好,会使你费尽周折却弄不清楚这些小函数各自的用途。要避免这些麻烦,关键在于给函数起一个好名称。函数的名称应该准确表达它的用途。给函数命名有一个好办法:首先考虑给这个函数写上一句怎样的注释,然后想办法将注释变成函数名称。
如果你看到一个函数名称不能很好的表达它的用途,应该马上加以修改。
范例
如下代码所示,假如一个公司建立一个员工的类,类中有一个员工名字的字段和一个按照小时计算员工收入的方法,那么下面代码的取名就显得很难理解了,所以我们会重构名称。
public class Person {public string FN { get; set; }public decimal ClcHrlyPR(){// code to calculate hourly payratereturn 0m;} }
重构后代码如下所示,这样看起来就非常清晰,如果有新进项目组的成员,也会变得很乐意看这个代码。
public class Employee {public string FirstName { get; set; }public decimal CalculateHourlyPay(){// code to calculate hourly payratereturn 0m;} }
小结
此重构经常被广大程序员所忽视,但是带来的隐患是不可估量的,也许老板要修改功能,那我们来看这段没有重构的代码(就算是自己写的,但由于时间和项目多等关系,我们也很难理解了),然后就会变得焦头烂额。相反重构后的代码就会觉得一目了然、赏心悦目。
当然了,本文中的改名不仅仅是函数,还包括类、方法参数、变量、委托、事件等等元素。
2Add Parameter(添加参数)
概要
动机
这个重构手法很常用,我相信你肯定用过它。
你必须修改一个函数,而修改后的函数需要一些过去没有的信息,因此需要给该函数添加一个参数。
那么,什么时候不使用本项重构?
除了Add Parameter外,只要有可能,其他选择都比“Add Parameter”要好,因为有可能其他选择不会增加参数列的长度。过长的参数列是不好的味道,因为程序员很难记住那么多参数,而且往往伴随着坏味道Data Clumps。
3Remove Parameter(移除参数)
概要
函数本体不再需要某个参数,将该参数去除。
动机
程序员可能经常添加参数,却往往不愿意去掉它们。他们想:无论如何,多余的参数不会引起任何问题,而且以后还可能用上它。
这种想法很糟糕!参数代表着函数所需的信息,不同参数代表不同意义。函数调用者必须为每一个参数操心该传什么东西进去。如果不去掉多余参数,就是让你的每一位用户多费一份心。
To Be Continued……
转载于:https://www.cnblogs.com/liuyoung/p/7899768.html
重构手法之简化函数调用【1】相关推荐
- 重构-改善既有代码的设计:简化函数调用 (八)
简化函数调用 1. Rename Method 函数改名 函数的名称未能揭示函数的用途.修改函数名称. 大力提倡的一种编程风格是:将复杂的处理分解成小函数.但是,如果做得不好,这会使你费尽周折却弄不 ...
- 重构手法——提炼函数、搬移函数、以多态取代条件表达式
目录 我的心路历程 我的学习概括 Extract Method(提炼函数) 动机*--做法 动机--做法* Move Method(搬移函数) 动机*--做法 动机--做法* Replace Cond ...
- 重构改善既有代码设计--重构手法19:Replace Data Value with Object (以对象取代数据值)...
你有一笔数据项(data item),需要额外的数据和行为. 将这笔数据项变成一个对象. class Order... private string customer; ==> class Or ...
- 重构手法之重新组织函数
重构手法之重新组织函数 在重构的手法中,很大的一部分是对函数进行整理,使函数能够恰当地包装代码(让代码自己说话而不是写更多的注释).重新组织函数的驱动力,往往都是由于函数过长.因为函数过长就以为着包含 ...
- 重构-改善既有代码的设计(十)--简化函数调用
Rename Method 函数改名 问题 函数的名称未能揭示函数的用途. 方法 修改函数名称. 动机 好的函数需要有一个清晰的函数名.保证一看就懂 Add Parameter 添加参数 问题 某个函 ...
- 重构改善既有代码设计--重构手法11:Move Field (搬移字段)
你的程序中,某个字段被其所驻类之外的另一个类更多的用到.在目标类建立一个新字段,修改源字段的所有用户,令它们改用新字段. 动机:在类之间移动状态和行为,是重构过程中必不可少的措施.随着系 ...
- 重构手法(一)之重新组织函数
1.Extract Method(提炼函数) 重构前: void printOwing(double amount){printBanner();//print details System.out. ...
- 重构手法之重新组织数据【1】
返回总目录 本小节目录 Replace Data Value with Object(以对象取代数据值) Change Value to Reference(将值对象改为引用对象) Change Re ...
- Python 简化函数调用的3种技巧
假设有一个函数,这个函数需要接收4个参数,并返回这4个参数的和: def sum_four(a, b, c, d):return a + b + c + d 如果需要固定最后前三个参数,仅改变最后一个 ...
最新文章
- 14Web APIs简介
- sublime text 2用package control安装插件时显示成功安装但实际没装上的问题
- go 调用其他文件函数_【C# 调用 Go 语言】0x1 Hello Golang
- java泛型中的标记,Java泛型中的标记符含义
- 字符串基础类型拓宽的操作,转换成整数值
- JavaScript变量声明+数据类型+数字格式+操作符+进制
- 校园综合服务平台小程序
- 设置office首字母不变大小的手段
- Java只读服务器,在服务器端,JSP页面如何只读打开本地的word文件并显示在网页上...
- lisp6 暖通cad_这些高效插件,学CAD的基本用过两种以上
- my security / csdn / 2000w / chakaifang.info
- 自学python在家干什么好_在家这么多天,职场人在家能自学什么?
- Miss okhttp
- VIM插件管理:管理插件的插件pathogen
- win7笔记本做wifi热点
- html网页页尾,终于认识网页页尾设计注意技巧
- WebStorm V5.0破解版含注册码
- 2021年高考语文作文成绩查询,2021年国家高考语文作文题
- android 防录屏 sdk,如何使用DRM-X4.0保护Zoom Web SDK?(Zoom会议直播防录屏)
- JS实现腾讯地图搜索信息下拉以及定位...