摘要: 我是怎样改善遗留系统的呢?这里给大家卖个关子,6月14日我会借助火龙果这个平台免费给大家讲课,破解遗留系统改善之道,到时候一定要来哟! 阅读全文
posted @ 2014-05-22 13:45 充满诗意的联盟 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 我的新书《大话重构》免费送书活动开始啦!参与方式: 一.进入该活动并免费试读本书: http://bbs.51cto.com/viewthread.php?tid=1104445&page=1&extra=#pid5624458 二.在该活动中完整回答以下四个问题的读者可获得抽奖机会: 1、你自认为你的编程水平是:A初级 B中级 C高级 D不好说,但别人都叫我大师 2、你在平常工作中是否进行重构:A经常 B有时 C几乎从不 3、这本书从目录和试读上看,你感觉怎样:A任督二脉通了 B很有收获 C呵呵 4、就目录而言,你认为哪几章最有用?如果还有所欠缺,你认为还应该增加什么内容? 详情请登录该网址。 阅读全文
posted @ 2014-04-22 09:02 充满诗意的联盟 阅读(1192) 评论(4) 推荐(0) 编辑
摘要: 我的新书《大话重构》终于要出来啦!这是一本讲咱程序员应该怎样开发高质量代码的书,它用大量精彩的故事,讲解高质量的代码是怎样一步一步开发出来,其设计的过程、心理的历程、遇到的问题、解决的思路…… 这是一本解惑的书,它通过故事向你阐述许多深邃难懂的设计难题;这又是一本故事会,它将那些枯燥的技术问题通过故事娓娓道来。它让你告别游击队转变为正规军,远离劣质代码走向精妙设计,真正明白专业级的软件开发是怎样的,真正明白重构是怎样一步一步进行的。 你也许会问,设计高质量的代码跟重构有什么关系呢?为什么你一边在谈高质量的代码设计,一边又在谈重构?其实我们一直在谈高质量的代码,它已经成为许多人的梦想,但似乎总是距离这个梦想十分遥远。在《大话重构》这本书里,我为大家找到了一条通往这个梦想的最佳途径,那就是重构…… 阅读全文
posted @ 2014-04-07 16:38 充满诗意的联盟 阅读(3281) 评论(33) 推荐(5) 编辑
摘要: 中国五千年文化造就了我们诸多的性格,其中之一就是好大喜功,这尤其反映在中国的软件产业。不错,我们确实拥有数量巨大的网民,拥有无与伦比的庞大市场与用户需求,但这并不足以让我们的步入世界领先行列。在巨大的市场优势面前常常让我们有些迷离,有些飘飘然,有些盲目地民族自豪感,喊出诸如“赶英超美”的口号。然而,客观地讲,我们现在却是差距巨大。 也许你觉得我这话有些崇洋媚外,但静下心来仔细分析我们自己设计的软件,我们注重了软件质量了吗?我们在如履薄冰地进行每一次设计了吗?我们的每一个系统都在编写高质量的代码了吗?也许每个项目的第一个版本我们做到了,但随着软件生命周期的延续,与软件需求的不断变更,我们真的越来越难以拍着胸口说,我做到了!这就是当今中国软件之殇:没有高质量的软件设计,哪来高质量的软件系统? 所以,作为中国软件业中的一员,你应该仔细反思了。下面这篇文章,一个真实的故事,也许可以给你许多的感悟 阅读全文
posted @ 2014-04-07 12:30 充满诗意的联盟 阅读(633) 评论(3) 推荐(1) 编辑
摘要: 在所有关于软件维护的故事中,功能的扩展是一个永恒的话题。正因为软件系统需要功能的扩展,需要新功能的加入,才使我们的编程需要那么多的设计。可以说,正是因为新功能的扩展,使得原有的系统质量下降;正是因为软件质量的下降,才使我们需要进行深入的分析与研究,制订设计原则,总结设计模式;正是因为要解决软件质量下降的问题,经过一番艰苦卓绝的摸索过程,我们才认识到系统重构才是解决该问题的最佳方案。 然而,事情总是这样的,每个系统当我们进行初次的设计时,设计思路、程序结构总是比较完美的。可是当初次设计结束后,我们在日后的维护中,开始往系统里添加新功能时,系统开始不完美了...... 阅读全文
posted @ 2014-03-24 15:43 充满诗意的联盟 阅读(658) 评论(0) 推荐(1) 编辑
摘要: 前面我们用了那么多示例讨论了代码复用。毫无疑问,几乎所有人都明白代码复用的重要意义,知道要写好代码必须要合理地复用代码。然而,曾经有一份真挚的感情放在你面前你却没有珍惜,那就是你应该复用代码了。等你失去的时候我才后悔莫及,有木有?为什么每当我们应当复用代码的关键时刻,我们却往往选择复制粘贴呢?因为道理非常清楚但实际操作起来却困难重重,因为要实现复用必须要调整原有程序。要调整原有程序,这就不好玩了,我们就不知道该怎样应对了,还是复制粘贴来得简单快捷。 阅读全文
posted @ 2014-01-31 21:26 充满诗意的联盟 阅读(3760) 评论(10) 推荐(2) 编辑
摘要: 但假如被合并的代码所在的类具有某种并列关系,甚至是同一个父类下的多个子类,或者同一接口的多个实现类,则我们可以采用继承的方式解决代码复用的问题。 具体做法是这样的,第一步还是整理原有的代码,通过比较,将需要重构的多份原代码中相同的与不同的代码整理出来。在整理过程中,可以将不同的代码,保留在各自的原程序中,而将相同的代码抽取出来成为独立的函数。这些函数就是我们后面需要抽象、合并、复用的代码。 下一步呢,就是运用“抽取父类(Extract Superclass)”的重构手法,从多个要复用的类中抽取出一个共同的父类。父类中包含的方法应当是经过比较后相同的部分,而将不同的部分保留在原有的类中。 阅读全文
posted @ 2014-01-12 08:04 充满诗意的联盟 阅读(1697) 评论(0) 推荐(1) 编辑
摘要: 另一种情况是这被比较的两份或者多份代码不在同一个对象中,这应该怎么办呢?我们可以采用的办法比较多,首先一种比较直观的办法就是运用“抽取类”将共同的部分抽取到一个工具类中,为其它各类所调用。比如,看看这个例子: 我们有个遗留系统在大量地方需要获取当前服务器时间,该功能在过去版本中这样写... 阅读全文
posted @ 2014-01-11 19:31 充满诗意的联盟 阅读(723) 评论(1) 推荐(0) 编辑
摘要: 前面我们讨论了小步快跑,是不是开始被雷到了,做了这么多年程序猿,原来程序可以这么开发。是的,小步快跑是一个十分新颖的概念,也许你一时半会儿还不能完全领悟,或者不能欣然接受,因为它太前卫了,与我们传统的思维大相径庭。但是,就像一部精彩的小说,我会慢慢揭开它神秘的面纱,你会慢慢领悟,进而接受。总之,小步快跑就是“活在当下”,做现在的设计,不必过多考虑将来(即使考虑,也是完全可以预见的将来),因为我们有重构。我倡导的是一种快乐的生活方式,编程是一种享受,而不是一个苦差... 阅读全文
posted @ 2014-01-11 19:17 充满诗意的联盟 阅读(2694) 评论(5) 推荐(2) 编辑
摘要: 系统重构到这一步,我们来看看用户关于时间问候语部分的变更需求:问候需要更加精细,如中午问候“Good noon! ”、傍晚问候“Good evening! ”、午夜问候“Good midnight! ”。除此之外,用户希望在一些特殊的节日,如新年问候“Happy new year! ”、情人节问候“Happy valentine’s day! ”、三八妇女节问候“Happy women’s day! ”,等等。此时我们发现,我们对时间问候语的变更不再需要修改HelloWorld或其它什么类,而是仅仅专注于修改GreetingAboutTime就可以了,这就是因重构带来的改善。 同时,我们发现,过去只需getHour()就足够,而现在却需要getMonth()与getDay()。随着程序复杂度的提升,我们适时进行了一次重构,将与时间相关的程序抽取到一个新类DateUtil中,就可以顺利地改写原有的时间问候语程序... 阅读全文
posted @ 2014-01-04 23:23 充满诗意的联盟 阅读(1251) 评论(5) 推荐(0) 编辑