关于重构(三)

今天不是太忙就索性将何为重构一并讲完!!!

上一节我们讲到,为何重构?重构的好处、优点?

我们接着将什么是重构?

其实这一解释应该放在最前面,其实从我们上学开始都是这么学习的,先说这是个什么东东,然后再去说这个东东的优点,为什么用它?为什么我没有这么做?因为我就想不按常理出牌(自己YY一下,其实自我感觉我们打破自己的习惯,尝试一种新的东西并不是一件坏事---当然我们尝试的东西是对的、正确的,那什么是正确的对的,我认为只要我们不去做违法乱纪的事,其他的事情我们都可以去尝试,闲话少扯开始正题)。

什么是重构,这是个什么东东呢?

《重构改善既有代码设计》中给出了两种定义:(名词)对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。

(动词)使用一系列的重构手法,在不改变软件可观察行为的前提下,调整期结构。

其实在我理解就是:不管是动词名词,前提:不改变软件可观察行为下调整其结构,目的:降低修改成本

这时有人会问一系列重构手法?是哪些系列?书中经常提到Extact Method/Class、Move Method/Class,在我狭义的理解就是提取方法封装方法封装类库(但封装将会带来代码的坏味道)

要知后事如何,且待下回分解!!!

时间: 2024-11-03 06:15:46

关于重构(三)的相关文章

ios - iPhone开发重构:从硬编码到模型到规律

无论在iPhone开发还是学习的过程中都会看到一些不是很理想的代码,不可 否认自己也在不断“贡献”着这类代码.面对一些代码的“坏味道”,重构显然 是个有效的解决途径.<iPhone开发重构>系列就想总结和补充iPhone开发中经 历的一些重构,其间可能会引用一些开源以及实际项目的代码,本着对技术的探 求,冒昧之处还请作者多多见谅. 在iPhone开发的过程中经常会遇到根据不同的Table行或者标识符推入不同 的Controller的需要,一个最直接的实现就是硬编码,通过if…else if…e

《重构—改善既有代码的设计》笔记

为什么要重构 改进软件设计,消除重复代码 保持代码易读.易修改 提高编程速度(良好设计师维持软件开发速度的根本) 发现BUG 什么时候重构 事不过三,三则重构(三次法则) 添加功能时一并重构 修改错误时一并重构 复审代码时一并重构 问题代码 重复的代码 过长函数 过大类 过长参数列表 发散式变化 霰弹式修改 依恋情节 数据泥团 基本型别偏执 switch惊悚现身 冗赘类 夸夸其谈未来性 令人迷惑的暂时值域 过度耦合的消息链 中间转手人 狎昵关系 异曲同工的类 不完美的程序库类 纯稚的数据类 被拒

【Java重构系列】重构31式之封装集合

2009年,Sean Chambers在其博客中发表了31 Days of Refactoring: Useful refactoring techniques you have to know系列文章,每天发布一篇,介绍一种重构手段,连续发文31篇,故得名“重构三十一天:你应该掌握的重构手段”.此外,Sean Chambers还将这31篇文章[即31种重构手段]整理成一本电子书, 以下是博客原文链接和电子书下载地址: 博客原文:http://lostechies.com/seanchamber

《重构-改善既有代码的设计》读书笔记

重构,第一个案例 1.1 起点 如果发现现有的代码结构使你无法很方便地添加新特性,那就先重构,使特性的添加比较容易进行后,再添加特性; 1.2 重构的第一步 为即将修改的代码建立可靠的测试环境 – 是人就会犯错,所以需要可靠的测试; 测试结果能够自我检验 – 成功"OK",失败列出失败清单并打印行号 (自动化对比测试结果是提高效率的前提); 1.3 分解并重组"巨型"函数 切分提炼长函数(Extract Method),并移至更合适的类(Move Method) –

[重构]读书笔记

如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性. 没个傻瓜都能够写出计算机能够理解的代码,但是唯有写出人类能够理解的代码的程序员,才是优秀的程序员. 第一章 重构步骤 1. 为即将修改的代码建立一组可靠的测试环境.测试机制再重构领域的地位很重要. 2. 分解并重组 2.1 extract 2.2 move 2.3 replace temp with query 2.4 State模式 Gang of four

实验三 敏捷开发与XP实验 20175301李锦然实验报告

一.实验内容 1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能.提交截图,加上自己学号水印. 2.在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .; git commit -m "自己学号 添加内容":git push; 提交搭档项目git log的截图,包含上面g

20175308 实验三《敏捷开发与XP实践》

20175308 实验三<敏捷开发与XP实践> 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如"查网络"."问同学"."看书"等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等).

Android-SQLitedatabase

Android-SQLitedatabase 一 SQLite简介 Android 在运行时(run-time)集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库 能支持Windows,Linux,Unix,在嵌入式设备中,可能只需要几百k的内存就足够使用了,所以很方便 数据库存储在 data/< 项目文件夹 >/databases/ 下,需要有root权限才可以查看 特性:轻量级,独立性,隔离性,跨平台,多语言接口,安全性 SQLite属于一个全面而又完

如何成为一名架构师,架构师成长之路(转)

转自http://blog.csdn.net/fei33423/article/details/61934514 如何成为一名架构师,架构师成长之路 原创 2017年03月13日 22:50:34 3116 大量阅读别人的系统实现文章( 架构= 模块图 + 模块流程图(启动 和 主流程 ,可以用拟物 tag) 或者 模块时序图) 动态+静态 .对象很重要,模块很重要. 从产品角度,用户很重要 脑图不需要按空格,收缩行 https://www.processon.com/view/link/58c

利用 React/Redux/React-Router 4/webpack 开发大型 web 项目时如何按需加载

如何设计一个大型 web 项目? React + webpack 如何按需加载? React + React-Router 4 + webpack 如何按需加载? React + Redux + React-Router 4 + webpack 如何按需加载? 实录提要: bundle-loader 和 Webpack 内置的 import() 有什么区别? 按需加载能否支持通过请求后台数据,动态配置页面的的应用场景? 参与过几个 React 项目,被依赖包搞的晕晕的,不知道该怎么选择? 什么包