重构点滴

重构点滴

2014-09-02

定义

意义

何时重构

重构与设计

补充

定义



返回

重构:在代码写好之后改进它的设计

重构(动词):使用一系列重构准则(手法〕,在不改变「软件之可察行为」前提 下,调整其结构。

意义



返回

「重构」使软件更易理解;「重构」改进软件设计;「重构」助你找到臭虫(bugs)

重构很像整理代码,所做的就是让所有东西回到应该的位置上,这使的代码更易理解。重构,消除重复代码,你就可以确定代码将所有事物和行为都只表述一次,惟一一次,这正是优秀设计的根本,这使的代码更易修改。在未完全理解整体设计之前,就贸然修改代码,程序将逐渐失去自己的结构,经常性的重构可以帮助代码维持自己该有的形态。对整体设计的深入理解,更容易找到臭虫。

何时重构



返回

重构本来就不是一件「特别拨出时间做」的事情,重构应该随时随地进行。
添加功能时一并重构
修补错误吋一并重构
复审代码吋一并重构

重构与设计



返回

重构和设计彼此互补。有了重构,你就可以通过一条不同的途径来应付变化带来的风险。因此,无须过渡设计。虽然你仍旧需要思考潜在的变化,仍旧需要考虑灵活的解决方案。但是你不必再逐一实现这些解决方案,而是应该问问自己:『把一个简单的解决方案重构成这个灵活的方案有多大难度?』如果答案是「相当容易」(大多数时候都如此〉,那么你就只需实现目前的简单方案就行了。

补充

软件设计的核心是提高软件的可复用性和可维护性。通常一个软件之所以可复用性和可扩展性差的原因在于设计过于僵硬,过于脆弱,复用率低,粘度过高等原因导致的。要提高可复用性和可扩展性,要遵循面向对象设计原则,重构也应该遵循这些原则:

开放封闭原则-对扩展开放对修改关闭

该原则是最基础的原则,起到总的指导作用。

依赖倒置原则-要依赖于抽象不要依赖于实现。

该原则指导如何实现开放封闭原则

里氏替换原则-任何父类出现的地方都可以被子类代替

该原则为良好的继承定义一个规范

接口隔离原则-提供尽可能小的单独的接口

最少知识原则-尽量减少对象之间的交互

单一职责原则-对于一个类而言,应该仅有一个引起它变化的原因

以上三个原则,为了实现高内聚、低耦合。

时间: 2024-08-11 23:45:02

重构点滴的相关文章

点滴的积累---牛腩新闻发布系统总结

最近学习状态一直都不错,最近敲完牛腩新闻发布系统后又看了看<培养计划6.0>发现"牛腩新闻发布系统"的作用其实就是一个成语--抛砖引玉.在该新闻发布系统中基本上涉及到了B/S开发所需要具备的知识模块(HTML.Asp.net.XML.JavaScript.CSS.DIV.JQuery.AJAX).通过这个小的系统我的学习也将从C/S转移到B/S上,当然这个小的系统带给我的远远不止这些. 一.重新认识了软件开发的流程. 之前虽然学习过UML.软件工程等也算对系统开发有了初步的

【WebForm】编程点滴:由文本框回车触发按钮点击事件想到的

在WebFomr中我们常常会需要实现这样一个功能:文本框回车时触发触发其他按钮的click事件.在JS中我们常常这样做: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

DripRoad(点滴之路)

关于DripRoad DripRoad 意为点滴之路,程序员之路在于点滴积累!是的,这些积累包括技术能力,沟通能力,业务能力等等.   我 我是唐志伟,2009年一个人来上海,就读于上海医疗器械高等专科学校(学校地址是上海杨浦区营口路101号.目前学校被合并了,并正式更名为上海健康医学院杨浦校区). 2012年毕业到至今,工作已经4个年头了.一直走微软路线,从事.Net开发. 做了 C/S,B/S开发.一直在做医疗信息化方面的工作:从最初的HIS(医院信息管理系统),到血液净化中心系统,到后来的

网页重构应该避免的10大 CSS 糟糕用法

对于网页重构来说,CSS禅意花园 是网页布局从 table 表格转到了 html +css 的标志 .这些年来,随着我们的网站越来越复杂:html5,css3,新的技术.新的属性,越来越多的开发者开始思考和尝试提高他们的 CSS 技能.那么我们从哪里着手呢?对于网页重构工作来说,我们应该养成什么样的开发习惯?一个糟糕的 css 用法是怎样的?我们应该怎么处理这些糟糕的 css.今天这篇文章,我将谈一谈10个我们应该避免的 css 糟糕用法,当然,我们也会分享怎么才是正确的用法. 为了方便大家理解

关于重构工作的一点思考

最近两周一直忙着和重构相关的事情,本文将简要概述从开始制定重构方案,到具体执行的过程中遇到的问题,以及对重构的一点理性思考. 起因: 本系统是2015年11月开始建设,当时为了快速投入使用,大量的烂代码,后期一直保持快速前进,没有进行过实质性的重构. 具体表现: ● 分层不清,sql哪都有,dao有.service也有,就差controller没写了.同样dao也包含业务逻辑. ● sql用的是spring jdbc,并没有使用mybatis,导致sql写起来有些复杂,封装不够基本都是原始sql

我们需要重构吗

当我开始写这篇文章的时候 ,我的思想还处于斗争阶段,多年来我也在程序开发的第一线,经历了很多项目,也编写了很多代码,但是从心里说我几乎没有用到重构这一方法,但最近看一本书名字叫<重构 改善既有代码的设计> ,它让我感觉我这些年的迷惑终于找到了明灯. 我以前认为代码只要实现了就OK了,不用再去动他了,不管当时实现时绕了多少个圈,用了多少冗余代码.有时候想想也是既然已经实现了,干嘛还要化那么多精力去装饰那些代码,而且保证系统功能正常运行和项目按时完成是第一要务,剩下的一切都变得不在重要了.当我开始

重构二叉树

重构二叉树 这是剑指offer中关于二叉树重构的一道题.题目原型为: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回. 一.二叉树的数据结构 做题之前,我们先熟悉下二叉树的数据结构.其一,定义:二叉树是一个连通的无环图,并且每一个顶点的度不大于3.有根二叉树还要满足根结点的度不大于2.有了根结点之后,每个顶点定

跟王老师学接口:(五)实例:对电子宠物系统进行重构

对电子宠物系统进行重构 主讲教师:王少华   QQ群号:483773664 一.重构需求 定义Eatable接口,在接口中定义eat()方法,表示吃饭功能 定义FlyingDiscCatchable接口,在接口中定义catchingFlyDisc()方法,表示接飞盘功能 定义Swimmable接口,在接口中定义swim()方法,表示游戏功能 定义抽象类Pet,包括宠物名称(name).健康值(health)和与主人亲密度(love)属性,并提供抽象方法print(),用来输出宠物信息 定义狗类(

重构第10天:提取方法(Extract Method)

理解:经常写的代码中,有一些计算逻辑比较复杂的方法,写下来一个很长很长的方法,我们可以把这个方法,根据功能,分解成单独的几个小方法.这样做不仅能够增加代码的可维护性,而且增加了易读性. 详解: 重构前代码: 1 public class Receipt 2 { 3 private IList<decimal> Discounts { get; set; } 4 private IList<decimal> ItemTotals { get; set; } 5 6 public de