重构代码类的工作如何使用用户故事

        底层平台类的功能大多是以API形式对外提供服务。当平台持续扩充,人员一轮轮替换,不断修改bug后,会发现有一些BUG已经无法修改,增加一个新功能的代价几乎不可以承受,修改一些BUG会导致另一些BUG爆发。这个时候,就到了被迫重构的时候。

        这个时候,应该怎么重构才能减少风险,减少对外部调用者的影响。

基本的原则:

        一是不在重构时加入新功能

        二是要重构不要重写

        三是一小步一小步重构不要一口气完成整个重构

        四是每一小步重构都要进行全面的验证后再进行下一步重构

        五是每重构完一步都需要对之前已经验证过的重构代码进行再次验证

        满足了这血泪得出的五个原则,就基本可以保证重构可以成功。

        而每一个原则都可以有多种实现方式,无论是传统的瀑布开发还是敏捷开发都可以实施,无论是否使用UT、自动化还是手工测试也都可以达到目的,无论是否了解设计模式、设计原则或者DDD方法都可以进行重构。只不过要根据自己团队的基础、经验来选择合适的方式。

        不过考虑到排除风险、快速重构、减少重复工作、提高重构质量,建议采取如下的方式组合。


        第一,采用敏捷开发方式

        第二,采用用户故事定义重构工作

        第三,采用用户故事拆分技巧将重构工作拆分成互相独立的更小功能范围的重构用户故事。

        第四,采用DDD技术划分领域范围,重新定义职责范围,并定义各个领域间的ACL。

        第五,对于每个领域,采用软件设计原则重新设计领域内的功能职责,保证每个实现类满足下列原则:单一原则解决职责问题、开闭原则解决维护变更问题、里氏代换原则解决扩展问题、依赖倒置原则解决代码依赖问题、迪米尔原则解决代码耦合问题。

        第六,熟练使用设计模式设计软件的静态结构和动态行为来满足以上提到的原则。

        创建模式集合:

          - 工厂模式,简化并标准化对象创建过程,保证得到的对象符合使用的标准

          - 抽象工厂模式,简化了多个工厂创建多个产品系列的标准化问题,保证一类工厂可以生产出对应工厂的系列产品(对象)

          - 构造者模式,简化了定制复杂产品的生产过程,可以使得复杂产品的生产过程可以通过参数定制化,从而简化了复杂对象的构建过程。

          - 单例模式,保证了可以得到同一个产品。尤其是在高速生产的时候,无论以多高的速度生产,都只会生产出唯一的一个产品。

          - 原型模式,保证了生产出来的产品自可以自我克隆。

        结构模型集合:

        - 适配器模式,保证不不同的产品间可以通过连接一个适配器满足对方产品的连接或连通方式。领域间的ACL多用适配器实现。

        - 桥接模式,保证不同类别的产品都符合连接的规范,使得按照规范生产的产品可以互联互通。

        - 装饰模式,保证生产的产品可以有不同的外观,可以随时替换。

        - 代理模式,保证生产的产品可以先提供一个演示版,等需要的时候才真正生产产品。

        - 外观模式,也叫总包模式,就是总装厂协调多家不同供应商提供原料最终组装成成品的生产产品方式

        - 组合模式,生产俄罗斯套娃产品,只不过一个套娃里可以并列放入多个套娃。

        - 享元模式,无论生产多少次,只要生产过,就只会得到同一个产品。大家分享着用吧。

        行为模式集合:

        - 策略模式:使用产品的时候,根据不同的使用场景,产品的实现功能会不同。

        - 模板方法:同系列的不同产品都有一个相同的功能,冰箱、电饭煲都有一个相同的液晶显示板。

          - 观察者模式:订阅者模式,订了份报纸,每天都能收到一份。

        - 迭代模式: 对于各种各样的物品集合,总是能按照定义的顺序将物品取出。

        - 责任链模式:对于发生的问题,总是能一层层向上汇报寻求能够决策处理人员。

        - 命令模式:管理者模式,管理者只管发号施令,具体工作由责任人负责完成。

        - 备忘录模式:回滚模式,记录每一步的修改内容,并可以随时回滚或前移。

        - 状态模式:恋爱模式,对方的回应取决于对方当下的心情。

        - 访问者模式:追星模式,歌迷见到歌星可能会表现出各种不同的行为。

        - 中介者模式:自如模式,房东与租客可以互不见面,所有的交易活动由中介进行协调。

        - 解释器模式:翻译模式,将一段外文进行翻译并按要求执行。

        第七,朝着理想模式,划分出一小块,按照各语言的重构原则进行代码重构。

          第八,自动化覆盖核心功能

          第九,增加单元测试代码

          第十,保留原有老代码,对比新老代码的结果

          第十一,持续进行后续优化

            第十二,重复第一步。


以上,就是比较稳妥的在敏捷中采用用户故事进行功能重构的方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,458评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,030评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,879评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,278评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,296评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,019评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,633评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,541评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,068评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,181评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,318评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,991评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,670评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,183评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,302评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,655评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,327评论 2 358

推荐阅读更多精彩内容