美文网首页
重新组织函数-Inline Method(内联函数)

重新组织函数-Inline Method(内联函数)

作者: 瑾然有昫 | 来源:发表于2019-12-18 14:44 被阅读0次

    一个函数的本体与名称同样清除易懂.在函数调用点插入函数本体,然后移除该函数

    示例:

    修改前:

       /**
         * @return int
         */
        public function getRating() {
            return $this->moreThanFiveLateDeliveries() ? 2 : 1;
        }
    
        /**
         * @return bool
         */
        public function moreThanFiveLateDeliveries() {
            return $this->numberOfLateDeliveries > 5;
        }
    

    修改后:

       /**
         * @return int
         */
        public function getRating() {
            return $this->numberOfLateDeliveries > 5 ? 2 : 1;
        }
    
    

    动机

    1. 简短的函数表现动作意图, 这样会是代码更清晰易读. 但有时候会遇到某系函数,其内部代码和函数名称同样清晰易读,也可能重构了该函数,使其内容和其名称同样清晰.果真如此你应该去掉这个函数.直接使用其中的代码.
    2. 另一种需要使用内联函数的情况是:代码中有很多不合理的函数,你可以将他们都内联到一个大型函数中, 在从中组织合理的小型函数.你可以吧所要的函数(有着你要的行为)的所有调用对象的函数内容都内联到函数对象中.比起既要移动一个函数,又要逸动它所调用的其他所有函数,将整个大型函数作为整体来移动会比较简单.
    3. 使用了太多的间接层,使得系统中的所有函数似乎都是对另一个函数的简单委托.造成在这些委托动作之间晕头转向,那么通常都会使用Inline Method. 当然 间接层有其价值,但不是所有的间接层都有价值.试着使用内联手法,移除那些无用的间接层.

    做法

    1. 检查函数, 确定它不具多态性
    2. 找出这个函数的所有被调用点都替换为函数本体
    3. 测试,删除该函数的定义

    相关文章

      网友评论

          本文标题:重新组织函数-Inline Method(内联函数)

          本文链接:https://www.haomeiwen.com/subject/fvkunctx.html