![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计开发
文章平均质量分 80
充满诗意的联盟
嘴里工作者,靠伶牙俐齿打天下的说
展开
-
代码复用应该这样做(2)
以上是对一个对象中各函数间的代码复用。另一种情况是这被比较的两份或者多份代码不在同一个对象中,这应该怎么办呢?我们可以采用的办法比较多,首先一种比较直观的办法就是运用“抽取类”将共同的部分抽取到一个工具类中,为其它各类所调用。比如,看看这个例子:我们有个遗留系统在大量地方需要获取当前服务器时间,该功能在过去版本中这样写...原创 2014-01-11 15:22:09 · 1087 阅读 · 1 评论 -
需求变更是罪恶之源吗?
我们身处软件工业时代这个令人振奋的时代,却面临着遗留系统这个令人尴尬的难题。事情总是这样的:软件最开初开发的时候总是非常清晰,清晰的需求、清晰的设计、清晰的代码,清晰的程序结构让人赏心悦目,甚至有些自我陶醉。随后,软件开始需求变更,每变更一次软件的质量就下降一次。这样,软件经过数次的变更以后,需求文档变得模糊不清,设计思路跟不上变更的脚步,程序代码则随着业务逻辑的复杂而臃肿不堪,程序员开始读不懂代...2013-12-08 10:54:06 · 106 阅读 · 0 评论 -
系统重构是个什么玩意儿
如题,系统重构是一个什么玩意儿呢?大家可能有很多的不同看法:1.系统重构是那些系统架构师、技术大牛玩的高端玩意儿,跟咱普通屌丝不懂,跟咱没啥关系。2.系统重构就是改代码,大改特改那种,整个重来一遍,这个比较邪恶,比较容易改出事儿,还是不要轻易尝试。3.我知道系统重构,也知道它能改善遗留系统,但我还是不敢轻易尝试,因为改出问题来怎么办,还是算了吧。然而我认为,现在我们...2013-12-11 13:25:35 · 91 阅读 · 0 评论 -
我们应当改变我们的设计习惯
以往我们在设计一个系统时,总是喜欢大布局。全面地整理系统需求,全面地分析系统功能,再将系统整体地划分成数个模块,分别去设计、开发、测试。这样一个过程往往会持续数月,花费大量的工作量。但是,不到最后开发完成出来,谁都不知道会不会存在问题。最终的结局就成了一场dubo,不成功则失败,这就是“大布局”的弊病。同时,任何人,即使是那些资深的高级工程师,也不可能一开始就保证自己的设计是正确的,总有或...2014-01-02 08:59:26 · 96 阅读 · 0 评论 -
小步快跑是这样玩的(上)
软件的发展规律就是这样的,起初十分简单明了,使我们可以轻松地进行合理的设计。接着开始变更,业务变得越来越复杂,程序也随之变得越来越复杂了。正是因为软件开始由简单软件向复杂软件转变,而我们的设计却没有合理地调整,最后导致了我们的系统越维护越困难,成为了不可被扣的遗留系统——IT攻城狮永远的痛。这就是遗留系统产生的根本原因。因此,解决遗留系统的根本办法,就是在软件由简单软件向复杂软件转变的关键...2014-01-04 22:44:23 · 236 阅读 · 0 评论 -
小步快跑是这样玩的(下)
系统重构到这一步,我们来看看用户关于时间问候语部分的变更需求:问候需要更加精细,如中午问候“Good noon! ”、傍晚问候“Good evening! ”、午夜问候“Good midnight! ”。除此之外,用户希望在一些特殊的节日,如新年问候“Happy new year! ”、情人节问候“Happy valentine’s day! ”、三八妇女节问候“Happy women’s day...2014-01-04 22:58:35 · 143 阅读 · 0 评论 -
代码复用应该这样做(1)
前面我们讨论了小步快跑,是不是开始被雷到了,做了这么多年程序猿,原来程序可以这么开发。是的,小步快跑是一个十分新颖的概念,也许你一时半会儿还不能完全领悟,或者不能欣然接受,因为它太前卫了,与我们传统的思维大相径庭。但是,就像一部精彩的小说,我会慢慢揭开它神秘的面纱,你会慢慢领悟,进而接受。总之,小步快跑就是“活在当下”,做现在的设计,不必过多考虑将来(即使考虑,也是完全可以预见的将来),因为我们有...2014-01-11 11:07:06 · 164 阅读 · 0 评论 -
代码复用应该这样做(2)
以上是对一个对象中各函数间的代码复用。另一种情况是这被比较的两份或者多份代码不在同一个对象中,这应该怎么办呢?我们可以采用的办法比较多,首先一种比较直观的办法就是运用“抽取类”将共同的部分抽取到一个工具类中,为其它各类所调用。比如,看看这个例子:我们有个遗留系统在大量地方需要获取当前服务器时间,该功能在过去版本中这样写:[code="java"]Date now = new Date(...2014-01-11 11:13:53 · 129 阅读 · 0 评论 -
代码复用应该这样做(3)
但假如被合并的代码所在的类具有某种并列关系,甚至是同一个父类下的多个子类,或者同一接口的多个实现类,则我们可以采用继承的方式解决代码复用的问题。具体做法是这样的,第一步还是整理原有的代码,通过比较,将需要重构的多份原代码中相同的与不同的代码整理出来。在整理过程中,可以将不同的代码,保留在各自的原程序中,而将相同的代码抽取出来成为独立的函数。这些函数就是我们后面需要抽象、合并、复用的代码。...2014-01-11 11:24:51 · 238 阅读 · 0 评论 -
我是怎样改善遗留系统的
我是怎样改善遗留系统的呢?这里给大家卖个关子,6月14日我会借助火龙果这个平台免费给大家讲课,破解遗留系统改善之道,到时候一定要来哟!相关链接:[url]http://www.uml.com.cn/communicate/ex_soft_refactor.asp[/url]本讲座关注5个问题:1.为何遗留系统维护越来越困难?2.遗留系统都有哪些问题导致软件质量下降?3....2014-05-22 13:37:58 · 138 阅读 · 0 评论 -
做好代码复用不简单
前面我们用了那么多示例讨论了代码复用。毫无疑问,几乎所有人都明白代码复用的重要意义,知道要写好代码必须要合理地复用代码。然而,曾经有一份真挚的感情放在你面前你却没有珍惜,那就是你应该复用代码了。等你失去的时候我才后悔莫及,有木有?为什么每当我们应当复用代码的关键时刻,我们却往往选择复制粘贴呢?因为道理非常清楚但实际操作起来却困难重重,因为要实现复用必须要调整原有程序。要调整原有程序,这就不好玩了,...2014-01-31 19:57:09 · 115 阅读 · 0 评论 -
软件可以这样功能扩展
在所有关于软件维护的故事中,功能的扩展是一个永恒的话题。正因为软件系统需要功能的扩展,需要新功能的加入,才使我们的编程需要那么多的设计。可以说,正是因为新功能的扩展,使得原有的系统质量下降;正是因为软件质量的下降,才使我们需要进行深入的分析与研究,制订设计原则,总结设计模式;正是因为要解决软件质量下降的问题,经过一番艰苦卓绝的摸索过程,我们才认识到系统重构才是解决该问题的最佳方案。然而,事...2014-03-24 11:30:20 · 1154 阅读 · 0 评论 -
过程扩展与放置钩子
前面我们谈到了功能扩展对维护一个软件的巨大作用。实际上,正是因为功能在不断地扩展,才使得我们的很多软件质量在下降。因此,如何进行功能扩展,我们不得不察。每当新功能到来的时候,不用急急匆匆就开始编码,我们应当仔细思考我们的设计,即使是时间非常紧张的项目。用更多的时间去思考与设计,才会用更少的时间去做更简单的设计与编码。在这里,我提倡的是设计应当简单到发指,因为它体现的是一种精巧绝伦,它会使我们的思路...2014-03-28 10:42:06 · 144 阅读 · 0 评论 -
遗留系统:IT攻城狮永远的痛
我常常觉得我们非常幸运,我们现在所处的时代是一个令人振奋的时代,我们进入了软件工业时代。在这个时代里,我们进行软件开发已经不再是一个一个的小作坊,我们在进行着集团化的大规模开发。我们开发的软件不再是为某个车间、某个工序设计的辅助工具,它从某个单位走向整个集团,走向整个行业,甚至整个社会,发挥着越来越重要的作为。一套软件所起到的作用与影响有多大,已经远远超越了所有人的想象,成为一个地区、一个社会,乃...2013-12-05 06:40:06 · 71 阅读 · 0 评论 -
一次软件编程技术的探讨之旅:重新审视代码复用
其实软件最初的设计是非常单纯的,按照业务流程一行一行往下写就行了。但是,随着业务流程越来越复杂,软件规模越来越大,考虑到软件的可维护性、易变更性等诸多因素,软件设计就变得不那么单纯了,而软件设计的功底就展现出来了。而在这些需要考虑的诸多因素中,代码的复用性是最考验程序员基本功的。人们常说,有经验、能力比较强的程序员往往能写出优秀的代码。然而,依我以往的经验,情况并非如此。许多人开发过大量的...2012-08-17 09:03:40 · 127 阅读 · 0 评论 -
一次软件编程技术的探讨之旅:重新理解一切皆对象
面向对象编程,多么熟悉而又遥远的概念啊,我们每天都在进行面向对象的编程,但也许只有刚毕业的,甚至还在大学读书的童鞋们才能说得清楚这个概念。根据我多年的经验,正是那些最简单的、最熟悉的、最令我们不屑一顾的东西,才是我们最没搞懂的、最似是而非的、最容易产生误解的东东。因此,今天,我带领大家重新审视一下这个既熟悉又陌生的概念,相信能带给你完全不同的认识。一提到面向对象编程,我们就不得不提到面向过...2012-08-15 08:49:52 · 105 阅读 · 0 评论 -
小步快跑是这样玩的(下)
系统重构到这一步,我们来看看用户关于时间问候语部分的变更需求:问候需要更加精细,如中午问候“Good noon! ”、傍晚问候“Good evening! ”、午夜问候“Good midnight! ”。除此之外,用户希望在一些特殊的节日,如新年问候“Happy new year! ”、情人节问候“Happy valentine’s day! ”、三八妇女节问候“Happywomen’s day!"...原创 2014-01-05 23:22:52 · 1862 阅读 · 0 评论 -
代码复用应该这样做(3)
但假如被合并的代码所在的类具有某种并列关系,甚至是同一个父类下的多个子类,或者同一接口的多个实现类,则我们可以采用继承的方式解决代码复用的问题。具体做法是这样的,第一步还是整理原有的代码,通过比较,将需要重构的多份原代码中相同的与不同的代码整理出来。在整理过程中,可以将不同的代码,保留在各自的原程序中,而将相同的代码抽取出来成为独立的函数。这些函数就是我们后面需要抽象、合并、复用的代码...原创 2014-01-11 15:27:41 · 1265 阅读 · 0 评论 -
小步快跑是这样玩的(上)
软件的发展规律就是这样的,起初十分简单明了,使我们可以轻松地进行合理的设计。接着开始变更,业务变得越来越复杂,程序也随之变得越来越复杂了。正是因为软件开始由简单软件向复杂软件转变,而我们的设计却没有合理地调整,最后导致了我们的系统越维护越困难,成为了不可被扣的遗留系统——IT攻城狮永远的痛。这就是遗留系统产生的根本原因。因此,解决遗留系统的根本办法,就是在软件由简单软件向复杂软件转变的关键时刻...原创 2014-01-05 23:18:59 · 1811 阅读 · 0 评论 -
我们应当改变我们的设计习惯
以往我们在设计一个系统时,总是喜欢大布局。全面地整理系统需求,全面地分析系统功能,再将系统整体地划分成数个模块,分别去设计、开发、测试。这样一个过程往往会持续数月,花费大量的工作量。但是,不到最后开发完成出来,谁都不知道会不会存在问题。最终的结局就成了一场赌博,不成功则失败,这就是“大布局”的弊病。同时,任何人,即使是那些资深的高级工程师,也不可能一开始就保证自己的设计是正确的,总有或这或那考原创 2014-01-02 09:23:47 · 889 阅读 · 0 评论 -
遗留系统:IT攻城狮永远的痛
我常常觉得我们非常幸运,我们现在所处的时代是一个令人振奋的时代,我们进入了软件工业时代。在这个时代里,我们进行软件开发已经不再是一个一个的小作坊,我们在进行着集团化的大规模开发。我们开发的软件不再是为某个车间、某个工序设计的辅助工具,它从某个单位走向整个集团,走向整个行业,甚至整个社会,发挥着越来越重要的作为。一套软件所起到的作用与影响有多大,已经远远超越了所有人的想象,成为一个地区、一个社会,乃至整个国家不可或缺的组成部分。然而......原创 2013-12-05 06:33:59 · 1267 阅读 · 0 评论 -
做好代码复用不简单
前面我们用了那么多示例讨论了代码复用。毫无疑问,几乎所有人都明白代码复用的重要意义,知道要写好代码必须要合理地复用代码。然而,曾经有一份真挚的感情放在你面前你却没有珍惜,那就是你应该复用代码了。等你失去的时候我才后悔莫及,有木有?为什么每当我们应当复用代码的关键时刻,我们却往往选择复制粘贴呢?因为道理非常清楚但实际操作起来却困难重重,因为要实现复用必须要调整原有程序。要调整原有程序,这就不好玩了,我们就不知道该怎样应对了,还是复制粘贴来得简单快捷......原创 2014-01-31 20:37:32 · 1467 阅读 · 0 评论 -
代码复用应该这样做(1)
怎样才能写好每一段代码呢?这里我不想讲太多的理论,这些理论到处都有,真不需你在这里费口舌。大家回想一下,我们在以往编写代码的过程中,有多少次在复制粘贴代码?不用说,一定是无数次,据说程序员操作最熟练的快捷键就是“ctrl+C”与“ctrl+V”。毫无疑问,我们编写的代码中有许许多多的功能是相似甚至完全相同的,关键在于你怎样去看待它。复制粘贴是最简单常用的方式,但在一个软件系统中,如果同一功能被反复地复制粘贴了,一旦这段代码需要变更时,那简直就是一种灾难。代码重复的问题普遍存在于许多遗留系统中,但我们很少会重原创 2014-01-11 15:12:27 · 1193 阅读 · 0 评论 -
系统重构是个什么玩意儿
如题,系统重构是一个什么玩意儿呢?大家可能有很多的不同看法:1. 系统重构是那些系统架构师、技术大牛玩的高端玩意儿,跟咱普通屌丝不懂,跟咱没啥关系。2. 系统重构就是改代码,大改特改那种,整个重来一遍,这个比较邪恶,比较容易改出事儿,还是不要轻易尝试。3. 我知道系统重构,也知道它能改善遗留系统,但我还是不敢轻易尝试,因为改出问题来怎么办,还是算了吧!然而我认为,现在我们对系统重构有太多的误解,以至于我们还不怎么了解它,就已经将它拒之门外......原创 2013-12-11 11:25:34 · 1297 阅读 · 0 评论 -
需求变更是罪恶之源吗?
我们身处软件工业时代这个令人振奋的时代,却面临着遗留系统这个令人尴尬的难题。事情总是这样的:软件最开初开发的时候总是非常清晰,清晰的需求、清晰的设计、清晰的代码,清晰的程序结构让人赏心悦目,甚至有些自我陶醉。随后,软件开始需求变更,每变更一次软件的质量就下降一次。这样,软件经过数次的变更以后,需求文档变得模糊不清,设计思路跟不上变更的脚步,程序代码则随着业务逻辑的复杂而臃肿不堪,程序员开始读不懂代码......原创 2013-12-08 10:46:48 · 872 阅读 · 0 评论 -
软件可以这样维护
在所有关于软件维护的故事中,功能的扩展是一个永恒的话题。正因为软件系统需要功能的扩展,需要新功能的加入,才使我们的编程需要那么多的设计。可以说,正是因为新功能的扩展,使得原有的系统质量下降;正是因为软件质量的下降,才使我们需要进行深入的分析与研究,制订设计原则,总结设计模式;正是因为要解决软件质量下降的问题,经过一番艰苦卓绝的摸索过程,我们才认识到系统重构才是解决该问题的最佳方案。然而,事情总是这样的,每个系统当我们进行初次的设计时,设计思路、程序结构总是比较完美的。可是当初次设计结束后,我们在日后的维护原创 2014-03-24 15:14:33 · 838 阅读 · 0 评论 -
中国软件业真的到了该反思的时候了
中国五千年文化造就了我们诸多的性格,其中之一就是好大喜功,这尤其反映在中国的软件产业。不错,我们确实拥有数量巨大的网民,拥有无与伦比的庞大市场与用户需求,但这并不足以让我们的步入世界领先行列。在巨大的市场优势面前常常让我们有些迷离,有些飘飘然,有些盲目地民族自豪感,喊出诸如“赶英超美”的口号。然而,客观地讲,我们现在却是差距巨大。也许你觉得我这话有些崇洋媚外,但静下心来仔细分析我们自己设计的软件,我们注重了软件质量了吗?我们在如履薄冰地进行每一次设计了吗?我们的每一个系统都在编写高质量的代码了吗?也许每个原创 2014-04-07 12:22:50 · 1316 阅读 · 3 评论 -
我的新书终于要出来啦
我的新书《大话重构》终于要出来啦!这是一本讲咱程序员应该怎样开发高质量代码的书,它用大量精彩的故事,讲解高质量的代码是怎样一步一步开发出来,其设计的过程、心理的历程、遇到的问题、解决的思路……这是一本解惑的书,它通过故事向你阐述许多深邃难懂的设计难题;这又是一本故事会,它将那些枯燥的技术问题通过故事娓娓道来。它让你告别游击队转变为正规军,远离劣质代码走向精妙设计,真正明白专业级的软件开发是怎样的,真正明白重构是怎样一步一步进行的。你也许会问,设计高质量的代码跟重构有什么关系呢?为什么你一边在谈高质量的代原创 2014-04-07 16:30:44 · 918 阅读 · 4 评论 -
一次软件编程技术的探讨之旅
[b]软件研发的轮回[/b]我们现在正在经历软件研发的轮回,一方面我们在维护着越来越糟糕的软件,不断对自己说,下次开发新的软件时,一定要好好设计,规范编码;但另一方面,当我们真的开始一个新的项目时,却举足无措、千头万绪,不知道该怎样去分析与设计,一切只有靠经验,以及那些不可捉摸的灵光一现。最后,当软件经历了几轮需求变更和维护以后,我们被打回了原形,甚至那最后的一块遮羞布都不曾保留。软件重新...2012-08-14 17:13:00 · 82 阅读 · 0 评论 -
我的新书终于要出来啦
我的新书《大话重构》终于要出来啦!这是一本讲咱程序员应该怎样开发高质量代码的书,它用大量精彩的故事,讲解高质量的代码是怎样一步一步开发出来,其设计的过程、心理的历程、遇到的问题、解决的思路……这是一本解惑的书,它通过故事向你阐述许多深邃难懂的设计难题;这又是一本故事会,它将那些枯燥的技术问题通过故事娓娓道来。它让你告别游击队转变为正规军,远离劣质代码走向精妙设计,真正明白专业级的软件开发是...2014-04-07 16:23:04 · 109 阅读 · 0 评论