一次项目重构的心得体会

接手一老项目,经过几个月之后,实在顶不顺原来的架构,一样事情要干两件活,代码冗余复杂,给维护工作带来很多问题和隐患,趁着前段时间新需求比较少,遂与产品负责人沟通之后暂停新需求,先进行项目重构。于是就花了近一个月的时间对其架构进行重构,首先是将接入部分和业务处理部分分离,其次是将业务处理部分集中,再次是引入内存数据库,实现业务处理部分无状态,将所有状态保持在内存数据中,从而使得业务处理进程可以多个进程并行,并且可以进行业务处理模块的无间断更新。重构完之后可以说是脱胎换骨了,其中有些心得和体会分享一下。

1、重构的本质

  这次的重构由自己一个人设计和实现,经过这次项目重构,对于重构的本质有了更加深刻的认识。抽象地来说,重构就是一个变换,把原先的代码进行变换,得到新的代码,而这个新的代码的外部接口和输入输出都是和原先的代码一样。

2、重构的步骤

  在分析的时候首先是进行模块的功能和接口的分解,将原先代码中的模块功能与接口分解,然后组合到新代码的模块中去,形成新的模块和接口。在新的架构中,需要引入新的模块间通信协议,先设计和实现新模块间的通信协议,并且测试通过之后,再设计和实现新架构中可以重用的元素。重用元素通过测试之后再进行原模块到新模块的迁移,并进行单元测试。

  最后进行集成测试。

  在整个过程中,测试非常重要,除了单元测试之外,因为整个架构进行了重构,集成测试也非常重要。而且最好是自己也进行测试,不能仅交给测试人员进行测试。在代码迁移的过程中,代码的拷贝以及替换是最需要小心的,一定要注意拷贝对象以及替换对象的语义。

时间: 2024-10-19 20:21:45

一次项目重构的心得体会的相关文章

第一次项目发布的心得体会

昨晚, —— 不, 应该是今天凌晨, —— 注定是个不简单的时刻. 我入职后参与的第一个项目发布,而且自己所做的工作是数据订正,涉及用户数据的操作总是非常敏感而重要的.因此,心理还是比较紧张的. 果然是真实环境更能锻炼人.虽然事先检查了好几遍,可是实际执行时还是出问题了. 事情是这样的: 我写了几个 .py  脚本用来操作数据库,需要更新10000多个用户的资源记录,每个用户的资源记录涉及好几个数据库的几张表.  在具体执行时,发现每一个用户的资源更新都比较慢,——但实际上,仅从操作上来看并不能

关于软件项目管理的心得体会之一

目的 软件项目管理是一项涉及面较广,但是非常必要的一项技能.相较于软件开发中的其他专业技能, 又更加依赖于实践和阅历.这里想跟各位同仁分享一下自己在过往项目中的心得体会,结合些许耳熟能详的理论,起到抛砖引玉的作用. 局限性 项目管理既然是一门实践科学,所以这里跟大家分享之前,还是要说明局限性.因为我之前是在一家提供软件服务的传统软件公司工作, 所以很多项目的经验都来源于作为乙方的外包项目,同时,大部分项目都是移动相关领域.目前我在一家国内的互联网公司,从事的电商相关的应用项目. 开篇 想跟大家分

项目管理心得:一个项目经理的个人体会、经验总结(zz)

本人做项目经理工作多年,感到做这个工作最要紧的就是要明白什么是因地制宜.因势利导,只有最合适的,没有什么叫对的,什么叫错的,项目经理最忌讳 的就是完美主义倾向,尤其是做技术人员出身的,喜欢寻找标准答案,耽误了工作进度,也迷茫了自己.以下是本人一些做项目的个人体会,写出来供大家指点,在 讨论过程中共同提高水平. 项目开始阶段是一个最重要的阶段.项目经理在接手一个新项目的时候,首先要尽可能地多从各个方面了解项目的情况,如: 1. 这个项目是什么项目,具体大概做什么事情,是谁提出来的,目的是解决什么问

AngularJS心得体会

AngularJS早些时候有过了解,知道这是一个JS的MVC框架,同类型的框架还有Backbone等.这次是由于项目需要,学习了两天的Angular后开始着手改之前的项目代码,这里大概说一下这一周学习Angular的心得体会吧. 首相,使用Angular最大的感受就是它的设计思路完全不同于Jquery,jquery更倾向于对Dom的操作:而使用Angular则需要你有一个全局的认识,你必须知道你想要做成什么样子才可以下手去做,所以我感觉ng对前端开发的要求比jquery要高一些.先来看看Angu

读《构建之法》的心得体会

读<构建之法>的心得体会 软件工程涉及的范围很广,对于即将投身IT业的学生而言,软件工程的内容又非常重要.读构建之法,尽管本书介绍了不少IT业正在使用的理论和技术,但是,这本书的主要思想并不是介绍所有的新思想和新技术,而是从这些新思想.新技术中总结出对自己在未来的工作中有用的东西. 在整本书中,印象最让我深刻的是“两个人的合作”这一章节.现代的软件产业经过几十年的发展,软件的结构随着用户需求的不断增加,软件的功能不断朝多元化与复杂化发展.不管是两个人的合作还是团队的合作,谈到合作不免提及规范这

大道至简第一章心得体会

大道至简——编程的精义  心得体会      谨以此用于苦恼编程序不得入门的人,不对之处敬请指出 “虽我之死,有子存焉:子又生孙,孙又生子:子又有子,子又有孙.子子孙孙,无穷匮也.而山不加增,何苦而不平?” ——<愚公移山>,<列子-汤问篇> 编程究其本身对大数人而言是一件很苦恼而又无法避免的事情,但是有点可笑的是编程本身实在是一件简单的事,因为“程序=算法+结构”,所谓的编程就是把一件事情交给计算机去做,然后把你的想法“告诉”计算机就行了.但是编程又是一件很“无语”的事情——因为

(三) Angular2项目框架搭建心得

前言: 在哪看到过angular程序员被React程序员鄙视,略显尴尬,确实Angular挺值得被调侃的,在1.*版本存在的几个性能问题,性能优化的"潜规则"贼多,以及从1.*到2.*版本的面目全非,不过宽容点来看这个强大的框架,升级到ng2肯定是一件好事情,虽然截至目前ng2还存在或多或少需要完善的地方,但是ng2做到了留下并强化ng1好的部分,移除或改善其不好的部分,并且基于许多较新Web技术来开发,不去看从ng1迁移到ng2的门槛和工作量的话,ng2的编程体验是很酷炫的. 目前n

阅读文章心得体会

阅读文章心得体会                         阅读了几篇文章,感觉大泥鳅这篇文章和我们的团队项目特别贴近,感觉有很多感想想要分享一下, 我想专门就大泥球这篇文章和我们团队项目的改进过程谈谈自己的感悟. 首先文章中说到的大泥球,其引申义在文中是指一个架构随意的.没有明显约束条件的系统,这样的 系统是因为在完成阶段由于各种原因成长失控而导致的结果,为了维护突然出现的各种问题,不断选用权 宜之计在系统整体上进行维修,打上一个接一个的补丁导致整体的无序性,重要的信息在系统的元素之间

关于Solr的使用总结的心得体会

摘要:在项目中使用Solr作为搜索引擎对大数据量创建索引,提供服务,本文是作者对Solr的使用总结的一点心得体会, 具体包括使用DataImportHandler从数据库中近实时同步数据.测试Solr创建索引的性能.以及测试Solr的搜索效率总结等. 具体搜索引擎概念.Solr搭建方法.数据库mysql使用方法,假设读者已有了基础.本文操作均是在linux上进行的. 1.      Solr 1.1  Solr从数据库中读取数据并创建索引速度(使用DataImportHandler) l 一次性