软件开发 —— 重构(refactor)】的更多相关文章

0. 代码坏味道 Large Class,过大的类:Large method,过长的(成员)函数: 1. 基本内涵 在不改变代码外在行为的前提下对代码做出修改,以改进代码的内部结构的过程. -- <重构>(Martin Fowler) 只是为什么要修改已经能够工作的内部结构呢?代码模块的能够工作不是唯一要求.每一个软件模块都具有三种职责. 第一个职责是能运行起来所完成的功能,这也当然是模块得以存在的原因: 完成功能: 第二个职责是应对变化,几乎所有的模块在它们的生命周期中都要变化,开发者有责任…
重复无聊的定义 测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法.它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行.这有助于编写简洁可用和高质量的代码,并加速开发过程.(来源百度百科) 重复无聊的过程 测试驱动开发的基本过程如下: 快速新增一个测试(编者注:并非快速) 运行所有的测试(有时候只需要运行一个或一部分),发现新增的测试不能通过 做一些小小的改动,尽快…
敏捷开发的介绍 概念 更强调程序员团队与业务专家之间的紧密协作.面对面的沟通(认为比书面的文档更有效).频繁交付新的软件版本.紧凑而自我组织型的团队.能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用. 沟通 建模不但能够促进你团队内部的开发人员之间沟通.还能够促进你的团队和你的project stakeholder之间的沟通. 简单 画一两张图表来代替几十甚至几百行的代码,通过这种方法,建模成为简化软件和软件(开发)过程的关键.这一点对开发人员而言非常重要-它简单,容易…
Pragmatic Software Development Tips务实的软件开发提示 Care About Your Craft Why spend your life developing software unless you care about doing it well? 关心你的技艺 如果你不在乎能否漂亮地开发出软件,你又为何要耗费生命去开发软件呢? Provide Options, Don’t Make Lame Excuses Instead of excuses, prov…
原文作者:kkun 原文地址:http://www.cnblogs.com/kkun/archive/2011/07/06/agile_software_development.html 敏捷是什么 敏捷开发是一种软件开发方法,基于迭代和增量开发,通过自组织,跨团队,沟通协作完成开发工作. 敏捷宣言的诞生 2001年2月11日到13日,17位软件开发领域的领军人物聚集在美国犹他州的滑雪胜地雪鸟(SnowBird)雪场.经过两天的讨论,“敏捷”(Agile)这个词为全体聚会者所接受,用以概括一套全…
敏捷软件开发 VS. 传统软件工程 软件工程这一术语1968年被提出,之后美国软件工程专家巴利·玻姆对十多年间研究软件工程的专家学者们提出的一些准则与信条,于1983年对提出软件工程的七条基本定理,将软件工程这一学科具体化,软件工程中开发与管理软件的方法也不断完备.而敏捷软件开发于2001年由Kent Beck和其他16位知名软件开发者提出,敏捷开发是人们对于传统软件开发方式的一种提出的新的挑战.本文将具体介绍软件传统工程与敏捷软件开发两种方法,并对两者进行对比分析. 一.传统软件工程 软件工程…
1.TEMPLATE METHOD 泛型,也就是这个模式,是可以基于泛型的. 我们往往会有一些算法,比如排序算法.它的算法部分,我可以把它放在一个基类里面,这样具体类型的比较可以放在子类里面. 看如下冒泡排序算法: package com.joyfulmath.agileexample.template.method; /** * @author deman.lu * @version on 2016-06-09 10:04 */ public abstract class BubbleSort…
The pragmatic programmers 一直在工作之余读些书,之前主要是纯英文版的计算机相关的算法,编译器,数学等,想通过读这些书来提高自己每日工作效能,结果收效甚微.一是,因为纯英文的书,阅读的慢,第二,也是最重要的一点,发现掌握的很慢,思前想后感觉可能是和工作的内容距离较远,两者不能互相辅助,第三,不能直接的回馈工作本身. 索性就换一换类型,最先入手的,是<agile software development-principles, patterns, and practices…
Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓  O725 1. DSL主要分为三类:外部DSL.内部DSL,以及语言工作台. 1 2. DSL规则 2 2.1. DSL = 整洁的代码 2 2.2. DSL必须以文本代码的形式出现 2 2.3. DSL的语法应该尽可能地接近英语或者其他自然语言 2 3. DSL 文本形式 or 图形标识 2 4. 实现方式 2 4.1. 2. 管道抽象 2 4.2. 3. 层次结构抽象 3 4.3. 4.…
第8章 SRP:单一职责原则 一个类应该只有一个发生变化的原因. 8.1 定义职责 在SRP中我们把职责定义为变化的原因.如果你想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责.同时,我们很难注意到这一点.我们习惯于以组的形式去考虑职责.违反SRP的示例代码: public interface Modem { public void Dial(string pno); public void Hangup(); public void Send(char c); public ch…