返回总目录

本小节目录

  • 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. 重构-改善既有代码的设计:简化函数调用 (八)

    简化函数调用 1.  Rename Method 函数改名 函数的名称未能揭示函数的用途.修改函数名称. 大力提倡的一种编程风格是:将复杂的处理分解成小函数.但是,如果做得不好,这会使你费尽周折却弄不 ...

  2. 重构手法——提炼函数、搬移函数、以多态取代条件表达式

    目录 我的心路历程 我的学习概括 Extract Method(提炼函数) 动机*--做法 动机--做法* Move Method(搬移函数) 动机*--做法 动机--做法* Replace Cond ...

  3. 重构改善既有代码设计--重构手法19:Replace Data Value with Object (以对象取代数据值)...

    你有一笔数据项(data item),需要额外的数据和行为. 将这笔数据项变成一个对象. class Order... private string customer; ==> class Or ...

  4. 重构手法之重新组织函数

    重构手法之重新组织函数 在重构的手法中,很大的一部分是对函数进行整理,使函数能够恰当地包装代码(让代码自己说话而不是写更多的注释).重新组织函数的驱动力,往往都是由于函数过长.因为函数过长就以为着包含 ...

  5. 重构-改善既有代码的设计(十)--简化函数调用

    Rename Method 函数改名 问题 函数的名称未能揭示函数的用途. 方法 修改函数名称. 动机 好的函数需要有一个清晰的函数名.保证一看就懂 Add Parameter 添加参数 问题 某个函 ...

  6. 重构改善既有代码设计--重构手法11:Move Field (搬移字段)

    你的程序中,某个字段被其所驻类之外的另一个类更多的用到.在目标类建立一个新字段,修改源字段的所有用户,令它们改用新字段.        动机:在类之间移动状态和行为,是重构过程中必不可少的措施.随着系 ...

  7. 重构手法(一)之重新组织函数

    1.Extract Method(提炼函数) 重构前: void printOwing(double amount){printBanner();//print details System.out. ...

  8. 重构手法之重新组织数据【1】

    返回总目录 本小节目录 Replace Data Value with Object(以对象取代数据值) Change Value to Reference(将值对象改为引用对象) Change Re ...

  9. Python 简化函数调用的3种技巧

    假设有一个函数,这个函数需要接收4个参数,并返回这4个参数的和: def sum_four(a, b, c, d):return a + b + c + d 如果需要固定最后前三个参数,仅改变最后一个 ...

最新文章

  1. 14Web APIs简介
  2. sublime text 2用package control安装插件时显示成功安装但实际没装上的问题
  3. go 调用其他文件函数_【C# 调用 Go 语言】0x1 Hello Golang
  4. java泛型中的标记,Java泛型中的标记符含义
  5. 字符串基础类型拓宽的操作,转换成整数值
  6. JavaScript变量声明+数据类型+数字格式+操作符+进制
  7. 校园综合服务平台小程序
  8. 设置office首字母不变大小的手段
  9. Java只读服务器,在服务器端,JSP页面如何只读打开本地的word文件并显示在网页上...
  10. lisp6 暖通cad_这些高效插件,学CAD的基本用过两种以上
  11. my security / csdn / 2000w / chakaifang.info
  12. 自学python在家干什么好_在家这么多天,职场人在家能自学什么?
  13. Miss okhttp
  14. VIM插件管理:管理插件的插件pathogen
  15. win7笔记本做wifi热点
  16. html网页页尾,终于认识网页页尾设计注意技巧
  17. WebStorm V5.0破解版含注册码
  18. 2021年高考语文作文成绩查询,2021年国家高考语文作文题
  19. android 防录屏 sdk,如何使用DRM-X4.0保护Zoom Web SDK?(Zoom会议直播防录屏)
  20. JS实现腾讯地图搜索信息下拉以及定位...

热门文章

  1. 可能是第二好的 Spring OAuth 2.0 文章,艿艿端午在家写了 3 天~
  2. 太难了~面试官让我结合案例讲讲自己对Spring事务传播行为的理解!
  3. 短网址有啥好处,用长网址不香吗?
  4. 说实话,你工作5年,不知道什么是Java agent技术,让我很吃惊...
  5. 学会这几招,你也可以用 Redis 做实时订阅推送!
  6. 14个实用的数据库设计技巧!
  7. 详解 Java 中 4 种 I/O 模型
  8. 大学生如何让自己的简历闪闪放光?
  9. 并发控制--悲观锁和乐观锁详解
  10. 基于 Spring Boot 和 Spring Cloud 实现微服务架构