• 重构手法之简化函数调用【1】


    返回总目录

    本小节目录

    1Rename Method(函数改名)

    概要

    函数的名称未能揭示函数的用途。

    修改函数的名称。

    动机

    将复杂的处理过程分解成小函数是良好的编程风格。但是,如果做的不好,会使你费尽周折却弄不清楚这些小函数各自的用途。要避免这些麻烦,关键在于给函数起一个好名称。函数的名称应该准确表达它的用途。给函数命名有一个好办法:首先考虑给这个函数写上一句怎样的注释,然后想办法将注释变成函数名称。

    如果你看到一个函数名称不能很好的表达它的用途,应该马上加以修改。

    范例

    如下代码所示,假如一个公司建立一个员工的类,类中有一个员工名字的字段和一个按照小时计算员工收入的方法,那么下面代码的取名就显得很难理解了,所以我们会重构名称。

    public class Person
    {
        public string FN { get; set; }
    
        public decimal ClcHrlyPR()
        {
            // code to calculate hourly payrate
            return 0m;
        }
    }

    重构后代码如下所示,这样看起来就非常清晰,如果有新进项目组的成员,也会变得很乐意看这个代码。

    public class Employee
    {
        public string FirstName { get; set; }
    
        public decimal CalculateHourlyPay()
        {
            // code to calculate hourly payrate
            return 0m;
        }
    }

     小结

    此重构经常被广大程序员所忽视,但是带来的隐患是不可估量的,也许老板要修改功能,那我们来看这段没有重构的代码(就算是自己写的,但由于时间和项目多等关系,我们也很难理解了),然后就会变得焦头烂额。相反重构后的代码就会觉得一目了然、赏心悦目。

    当然了,本文中的改名不仅仅是函数,还包括类、方法参数、变量、委托、事件等等元素。

    2Add Parameter(添加参数) 

    概要

    某个函数需要从调用端得到更多的信息,那么为此函数添加一个参数,让该参数带进函数所需信息。

    动机

    这个重构手法很常用,我相信你肯定用过它。

    你必须修改一个函数,而修改后的函数需要一些过去没有的信息,因此需要给该函数添加一个参数。

    那么,什么时候不使用本项重构?

    除了Add Parameter外,只要有可能,其他选择都比“Add Parameter”要好,因为有可能其他选择不会增加参数列的长度。过长的参数列是不好的味道,因为程序员很难记住那么多参数,而且往往伴随着坏味道Data Clumps。

    3Remove Parameter(移除参数)

    概要

    函数本体不再需要某个参数,将该参数去除

    动机

    程序员可能经常添加参数,却往往不愿意去掉它们。他们想:无论如何,多余的参数不会引起任何问题,而且以后还可能用上它。

    这种想法很糟糕!参数代表着函数所需的信息,不同参数代表不同意义。函数调用者必须为每一个参数操心该传什么东西进去。如果不去掉多余参数,就是让你的每一位用户多费一份心。

    To Be Continued……

  • 相关阅读:
    经常让程序员恼火的一些事情你是否也遇到过一些?
    CRC文件解压缩问题
    你在淘宝买件东西背后的复杂技术 技术普及帖
    程序员需要戒骄戒躁
    IT路上的应该注意自我规划 学习规划与自我修炼
    腾讯,我最恨别人用枪顶着我的头(转)
    软件管理,软件生命周期,软件过程名词解释
    程序员需要掌握的最终技术是什么? “终极技术”:应对困境的方法和信念
    程序员如何缓解“电脑病”
    新浪微博XSS攻击事件
  • 原文地址:https://www.cnblogs.com/liuyoung/p/7899768.html
Copyright © 2020-2023  润新知