Prefactoring——Introduction
Prefactoring——Introduction
Introduction
听到有人说《Prefactoring》是一本好书:“能提升数十年的功力”,虽然过于夸张,但也说明这本书还是值得一读的,不然怎么会得了JOLT大奖呢?如作者所言,读本书需要一定的开发经验的积累,否则茫然不知为何,收获不大。
最近花时间看了看《Prefactoring》,把所得记录下来。
What about Prefactoring?
在软件开发中,我们常常谈论重构(Refactoring),它已经是一个被广泛认可的开发方法,它可以提高软件的品质;而且很多开发者在开发中也找到了可以省事的理由:“现在就这样简单处理吧,以后再进行重构”,可事实上,他可能永远都没有机会和功夫去做重构了。的确,每个项目和产品都有成本(资金和人力)和时间的限制,“重构”在很多项目中往往只是一个概念,而没有实践。
针对这样的现状,Ken Pugh提出了Prefactoring——防患于未然,在项目开始前预先进行思考,三思而后行;根据既有的经验和指导原则来避免落入软件开发中诸多的陷阱,在开始编码前就预先做出好的设计来,以降低重构的代价——这似乎并没有多少新意,因为在历史的长河中,人们向来都会以史为鉴;而诸多Design Principle/Design Pattern/XXX Driven Development都告诉我们如何使得代码能适应一定的变化,易于调整和修改。不过,作者根据自己多年丰富的经验,列出了诸多的指导原则,强调了软件开发流程的重要性,告诉我们如何在开发中应用一些原则来减少我们重构的次数,降低重构的代价,毕竟重构可能是要付出很大的代价的。本书也从侧面反映了开发团队中需要有经验丰富的开发者进行指导,人的作用不言自明,和《软件工艺》中所云暗合,Ken Pugh正是在向我们传授他的“技艺”。
Refactoring & Prefactoring
预构和重构可说是关系密切:
1、 重构是在写代码之后进行的,而预构则是在写代码之前。
2、 重构中的一个重要方法是Extract Method,而预构中的“Separate Policy”则可以帮助我们少作Extract Method。
3、 预构和重构一样不强调做big design。但是预构的原则告诉我们应该花一些时间去调查软件的环境(包括业务和技术等方面)。
4、 预构不反对重构,而是致力于减少重构的次数,降低重构的代价。
5、 重构关注的是代码的code transformations,而预构则不止于此。预构还建议我们尽量利于可以利用的东西,比如一些优秀的open source的project,而不是一开始就自己写每一行代码。
Postscript
预构看起来有些像关于设计的指导原则,而并没有到达方法学的高度,作者强调了设计和开发过程的重要性,尤其是设计的重要性,这点和RUP倒是有共同的地方——预先做出好的设计,好的设计能让项目大大降低技术风险。
Reference
Prefactoring: Extreme Abstraction, Extreme Separation, Extreme Readability
Prefactoring and Refactoring
《Prefactoring》避开重蹈覆辙的陷阱
[推荐]Prefactoring- -
转载于:https://www.cnblogs.com/jiezhi/archive/2006/07/26/460177.html
Prefactoring——Introduction相关推荐
- Prefactoring——Guidelines
Prefactoring--Guidelines Prefactoring--Introduction Introduction 虽然Prefactoring这个概念并无多少新意(个人看法),但Ken ...
- Blender 3.0基础入门学习教程 Introduction to Blender 3.0
成为Blender通才,通过这个基于项目的循序渐进课程学习所有主题的基础知识. 你会学到什么 教程获取:Blender 3.0基础入门学习教程 Introduction to Blender 3.0- ...
- 网络增强现实开发简介 Introduction to Web AR development
搭配webXR.mindAR.three.js和tensorflow.js 你会学到: 获得构建不同类型的网络增强现实应用程序的实践经验,包括图像效果.人脸效果和世界效果 获得关于增强现实如何在网络浏 ...
- ZBrush全面入门学习教程 Schoolism – Introduction to ZBrush
ZBrush全面入门学习教程 Schoolism – Introduction to ZBrush ZBrush全面入门学习教程 Schoolism – Introduction to ZBrush ...
- 视频色彩校正简介 Introduction to Video Color Correction
视频色彩校正简介 Introduction to Video Color Correction 视频色彩校正简介 Introduction to Video Color Correction MP4 ...
- [转]Introduction of iSCSI Target in Windows Server 2012
Introduction of iSCSI Target in Windows Server 2012 源地址:http://blogs.technet.com/b/filecab/archive/2 ...
- MS UI Automation Introduction
MS UI Automation Introduction 2014-09-17 MS UI Automation是什么 UIA架构 UI自动化模型 UI自动化树概述 UI自动化控件模式概述 UI 自 ...
- 音频(3):iPod Library Access Programming Guide:Introduction
Next Introduction 介绍 iPod库访问(iPod Library Access)让应用程序可以播放用户的歌曲.有声书.和播客.这个API设计使得基本播放变得非常简单,同时也支持高级的 ...
- 2018-3-25论文(Whale Optimizer Algorithm)+(Gery Wolf Optimizer)笔记二---Introduction 对比
代码以及文论的来源: Seyedali Mirjalili http://www.alimirjalili.com/Projects.html 感谢作者!!! 2014年GWO Introductio ...
最新文章
- Shell脚本中的并发
- EOJ Monthly 2019.2 (based on February Selection) D.进制转换
- Python基础第一天
- vue从url中获取token并加入到 请求头里_轻流amp;amp;企业微信——获取打卡数据...
- python列表生成式内必须定义匿名函数_Python基础-----基础概念总结
- Spring4.x()---JdbcDaoSupport的使用
- 页面引入多个echarts_JavaWeb之Echarts数据统计图表详细教程
- VUE2.0 elemenui-ui 2.0.X 封装 省市区三级
- 计算机鼠标显示停顿原因,经常遇到鼠标指针停顿卡的解决方法
- AP3128 DC/DC转换器 小封装,高性能 异步升压10白光LED驱动
- PC微信端浏览器js点击失效
- 你还在为不知道怎么给家人庆祝生日而发愁吗?
- 我喜欢生命本来的样子
- JESD204B SUBCLASS1确定性延时参数的计算
- 中国记账软件行业现状规模与应用前景预测报告(2022-2027)
- noip2016普及组初赛中山市成绩表及分数线
- vue 使用 :class 根据不同状态值设置状态文字颜色不同
- 伏地魔爱上林黛玉?就没有B站不能组的CP!
- 遥控车钥匙算法之KeeLoq
- 刚刚开通,感受一下此地气氛
热门文章
- CVPR 2020 论文大盘点-图像增强与图像恢复篇
- 百度EasyDL深度学习实战营,免费教你转型AI工程师!
- 数十亿次数学运算只消耗几毫瓦电力,谷歌开源Pixel 4背后的视觉模型
- php成品网站安装,PHPweb成品网站安装环境要求和安装方法
- python批处理将图片进行放大实例代码
- 程序员需要学习太多数学知识吗?
- 3详细参数_大疆精灵3值得入手吗?最详细的实测体验,各种参数应有尽有!
- 【绝对干货】TEASER前传之QUASAR:基于四元数的存在外点Wahba问题的可证明最优解
- 图像数据转换成db(leveldb/lmdb)文件(转)
- java outer关键字_java中的关键字