提炼函数(Extract Method)
一、提炼函数
1.有一段代码可以被组织在一起并独立出来
2.将这些代码放进一个函数,并函数的用途来命名
二、函数的作用
1.解释性(以函数的名称解释其用途)
2.复用性(避免重复代码)
3.可读性(小体积的函数,更加易于阅读)
三、示例
let persons = [{name: '张三', salary: 8000}, {name: '李四', salary: 10000}]//原init函数
function init(persons) {console.log('统计总收入') //可以放入任意操作let totalSalary = 0for(let person of persons) {totalSalary += person.salary}console.log('总收入为' + totalSalary) //可以放入任意操作
}init()//extract method, 改进后的init函数
function init() {console.log('统计总收入') //可以放入任意操作const totalSalary = calculateTotalSalary(persons) //将函数独立出来console.log('总收入为' + totalSalary) //可以放入任意操作
}function calculateTotalSalary(persons) {let totalSalary = 0for(let person of persons) {totalSalary += person.salary}return totalSalary
}
总结
1.通常体积较小的函数,负责的责任少,需要修改的理由也就少
2.小体积函数通常易于阅读,也更容易被复用
3.良好的函数命名,可以表达函数的用途
被需要。
一样东西的价值在于是否需要他。 ——德厄费
提炼函数(Extract Method)相关推荐
- 步步为营 .NET 代码重构学习笔记 二、提炼方法(Extract Method)
动机(Motivation) Extract Method是我们最常用的重构手法之一.当我们看见一个过长的函数或一段需要注释才能让人理解用途的代码,我们就会将这段代码放进一个独立函数中. 有数个原因造 ...
- eclipse抽取一段代码作为函数的方法(Extract Method)
前言 在编写代码的时候,很有可能某一部分的代码块会被经常重复使用,此时,可以将这部分代码作为一个功能函数单独拿出来,这用重复调用可以减少代码的重复量. 方法 首先,正确的安装eclipse,具体的安装 ...
- 重构手法——提炼函数、搬移函数、以多态取代条件表达式
目录 我的心路历程 我的学习概括 Extract Method(提炼函数) 动机*--做法 动机--做法* Move Method(搬移函数) 动机*--做法 动机--做法* Replace Cond ...
- 重构 - 提炼函数,消除重复代码
一.参考资料 二.重构步骤 - 以提炼重复计算函数为例子 演示代码 具体步骤 1.提取重复new创建 2.提取会变化的信息 3.使用抽取的共有信息,并删除原有信息 4.提取计算函数 5.使用卫语句,简 ...
- 重构笔记——提炼函数
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42214393 在前面的三篇文章中介绍了重构 ...
- Extract Method(提炼函数)
动机 当我看到一个过长的函数或者一段需要注释才能让人理解用途的代码,我就会将这段代码放进一个独立函数中. 做法 创造一个新函数,根据这个函数的意图来对它命名(以它"做什么"来命名, ...
- PHP数组函数extract 使用详解
extract - 从数组中将变量导入到当前的符号表 说明 extract(array &$array, int $flags = EXTR_OVERWRITE, string $prefix ...
- PostgreSQL 时间函数 extract函数和epoch 新纪元时间的使用
Extract 属于 SQL 的 DML(即数据库管理语言)函数,同样,InterBase 也支持 Extract,它主要用于从一个日期或时间型的字段内抽取年.月.日.时.分.秒数据,因此,它支持其关 ...
- pycharm奇技淫巧 直接通过代码输出函数 refactor —— extract method
结果:
最新文章
- mysql的存储引擎详解_Mysql存储引擎详解
- Could not find 'cudnn64_6.dll'
- Doubly Linked List,( Aizu - ALDS1_3C )
- Tomcat 5 5-Manager App HOW-TO 翻译了部份 努力中
- 关于WEB ServiceWCFWebApi实现身份验证之WEB Service篇
- 解除主键锁_mysql 锁
- SQL Sever的安装教程
- c#中Debug和Release的区别实验
- Exception】Chrome浏览器提示:此网页正试图从未经验证的来源加载脚本
- 关于《Robust outlier detection based on the changing rate of directed density ratio》的阅读笔记
- Python复习的知识点
- 人工智能数学基础---定积分4:使用换元法计算定积分
- JavaScript制作的时钟
- 电脑桌面计算机中文变成英文怎么弄,电脑IE浏览器工具栏设置选项英文怎么改成中文...
- 《简明数学分析》郇中丹——1.2对课程学习的忠告
- 最标准的系统字体规范font-family
- 4Rs营销理论(转载)
- UG NX 12 NX 创意塑形
- unity的异步加载
- 百度测试工程师胜任力模型
热门文章
- Android各应用市场包名
- 移动领导驾驶舱如何制作?移动驾驶舱app
- 人机大战硝烟再起:阿尔法狗升级了 柯洁拼了
- android点击按钮静音,android 实现一键静音功能
- 量化交易领域最重要的10本参考书推荐
- java公寓管理系统_java公寓管理系统设计
- 滴滴副总裁叶杰平离职,他是出行巨头的AI掌门人
- mysql mysqldataadapter_MySQL的DataAdapter用法
- 贝勒大学计算机专业,贝勒大学计算机科学贝勒大学计算机科学.pdf
- 全国计算机等级考试二级c语言题库有多少套,(详细完整含50套)2020年全国计算机等级考试二级c语言上机精选题库.pdf...