重构存在的现状
首先让我们了解下重构,重构是存在风险的:重构代码是危险的,代码的变化会导致测试的压力很大。除非有必要的理由,否则不要轻易重构。
想想我们为什么要重构:
1.原有的系统太过庞大,需要拆分,重新架构
2.原有的技术存在瓶颈,无法满足扩展
3.业务不断发展,需要改进或重新设计业务,来满足不断发展的业务需求
4.原来的系统开发太烂了,维护的成本,包括修改、增加新的功能、代码逻辑太复杂、人员流失。。。
于是我们开始考虑重构,怎么重构,你考虑清楚没有?
假如现状是这样:
- 代码逻辑对你来说过于复杂,而且没有时间去分析它。
- 你没有理解为何之前的开发人员是这样编写代码的。
- 你参与的系统是关键系统,而且时间紧。
- 你对团队、应用或者编程语言是新手。
- 你没有足够的时间,去考虑重构的的技术或优化的方案
- 你没有预估重构实在存在的风险
- 你没有强大的测试团队,和优秀的测试人员
你动手去做了,那么肯定是吃力不讨好的事情,“ 改了这么久,怎么会这么多的错误,怎么你们还不理解业务,你已经影响整个进度和计划了,还不如不重构呢”,哈哈恭喜你中标了,你会碰到困难,碰到外部的压力,就会感到很多无耐,团队的不理解、团队的怀疑、测试资源的不到位、其他部门的冷嘲热讽,风险存在,现实就存在。
假如现状是这样的:
- 现有的代码比预期的要复杂,而且你已经分析过它。
- 你所做的改动比现有代码逻辑更加清晰。
- 团队从上至下都达成高度的一致,达成了战略同盟
- 你有时间、人力和财力来增加完整的项目回归测试。
- 现有代码过时了而且效率低下,比如孤立的或者质量差的代码。
- 你和同事讨论过重构代码的好处和风险,并且达成一致。
你可以动手了,想好如何动手吧,做好计划,协调各部门的力量,分步实施,设置里程碑,定时检查重构
的结果。
主要从下面几个方面入手:
- 做好计划,方案,细化任务,分步实施,努力把代码的重构安排在较小的开发周期内
- 在开始重构之前,花时间弄清楚复杂的代码逻辑。
- 需要一定的方案设计,确定是否大的框架需要整体改变,或者那些需要改变,列出来,画出来。
- 在需要时利用设计模式,不要为了用而用,必须要充分的理由。
- 利用自动化的回归测试来快速验证你的代码更改,这非常重要,如果你还没有准备好自动化回归测试,那么请在重构之前先搭建好测试环境。
- 尽量把更改独立化,方便查找问题。
- 避免疲劳战术,让团队有紧有松,保持清醒的头脑,经常进行交流。
- 确保测试计划包含了所有的回归、功能、负载、性能和用户验收测试。
McConnell,在代码大全中提到安全测试:
保存初始代码——在开始重构之前,要保证你还能回到代码的初始状态。用版本控制系统保存一个初始版本,或者把最初正确的文件复制到备份目录中去。
重构的步伐请小一些——这样才能理解所做修改对程序的全部影响。
同一时间只做一项重构——除非是对付那些最为简单的重构,否则请在同一时间只做一项重构,在进入下一项重构之前,对代码重新编译并测试。
把要做的事情一条条列出来——伪代码编程过程的自然延伸就是列出一份重构列表,然后你应该按照这份列表从A点一步步走到B点。写一份重构列表能够让你在修改时保持思路连贯。
多使用检查点——在重构的时候,很容易出现代码没有按照设想正常运行的情况。除了保存初始代码外,在重构中还应在多个地方设置检查点,这样一来,即使你编码时钻进了死胡同,仍然可以让程序回到正常工作的状态。
利用编译器警告信息——要让一些小错误错过编译器的目光很容易。你最好把编译器的警告级别设置为尽可能苛刻,一旦输入中有这些小错误,编译器就能立刻把它们找出来。
重新测试——应该把重新测试作为检查所修改代码工作的补充。当然,这点要取决于从一开始你是否就有一套优秀的测试用例。
增加测试用例——除了重新运行过去做过的那些测试,还应该增加新的单元测试来检验新引入的代码。如果重构使得一些测试用例已经过时,那么就删除这些用例。
根据重构风险级别来调整重构方法——有一些重构实施起来会比其他重构更为危险。而类似于“用具名常量替代神秘数值”一类的重构则机会不会出现什么问题。涉及到类、成员函数结构、数据路架构等改变,或者对布尔判断等进行修改的重构则极具风险。对于简单的重构而言,你只需要简化整个重构过程,然后简单的对代码重新测试,而不用一次去完成一个重构,也不用进行正式的检查工作。
在国内,那些公司适合做重构:
1.专注并一直做产品,或平台供应商
2.技术团队较完善的,产品、架构设计、开发、测试等各条战线都有战斗力的。
3.有资金和时间投入的
4.有团队管理、技术牛人的。
5.大企业,发展稳定的。
相关推荐
然而,尽管已有多种智能算法应用于配电网重构,但仍存在一些值得进一步研究的问题。例如,如何精确地模拟和预测分布式电源的输出特性,以减少不确定性带来的影响;如何设计更高效的优化算法,以应对大规模分布式电源...
- 分析现状:识别当前数据库存在的问题,如性能瓶颈、数据冗余等。 - 设计新结构:根据分析结果,设计更优的数据库结构,包括表、索引、关系等。 - 搭建测试环境:创建与生产环境相似的测试数据库,进行重构操作...
【关键词】无独立请求权第三人、诉讼制度、制度现状、制度重构、诉讼经济、合法权益 【正文】 无独立请求权第三人制度在中国民事诉讼法中扮演着重要角色,但其存在的问题和矛盾不容忽视。首先,民事诉讼法第56条第2...
"dashboard rejected接口重构"这个主题,意味着我们需要关注的是一个与仪表盘(dashboard)相关的应用或系统中的特定接口,该接口在原先的设计中可能存在问题或者不满足当前的需求,因此需要进行改造。 首先,我们...
“道”在中国传统文化中被视为无所不在的存在,而在软件开发中,“架构之道”则代表着设计的核心理念和指导原则。 - **重要性**:保持清晰的架构之道对于软件项目的长期成功至关重要。随着项目的发展,如果忽视了这...
企业智慧CRM平台重构设计与建设项目实施技术方案是企业解决当前CRM平台存在的问题,提高业务效率,提高客户 satisfaction,提高销售 Revenue的重要一步。该项目的实施将带来许多益处,提高企业的竞争力和市场份额。
重构方法的选择需要基于对系统现状的充分理解和新系统要求的深入分析。报告中提到的系统重构的步骤包括: 1. 把握系统现状:这一阶段的工作是调查和分析当前正在运行的系统。了解系统的复杂性、存在的问题以及任何...
本文主要探讨了稀疏模拟信号的压缩采样技术以及重构算法的研究现状和未来的发展趋势。 稀疏模拟信号压缩采样是一种新型的信号处理技术。其主要思想是在保持信号信息完整的前提下,通过非自适应线性测量和优化重构...
B 端产品-CRM 重构——我的传统企业数字化转型经历 本文是关于一个传统制造业企业数字化转型的经历,讲述了该企业在 CRM 系统重构过程中的挑战和解决方案。作者作为项目负责人,带领团队完成了 CRM 系统的重构,...
#### 飞行控制系统重构技术的发展历史及现状 重构控制的概念最早由美国国家航空宇航局(NASA)于1982年提出。随后,美国空军于1984年开始进行自修复飞行控制(SRFC)系统的研发工作,同时航空业界也展开了针对商用...
在本文中,我们将从技术角度详细探讨券服务重构的关键点,包括现状分析、问题识别和重构方案。 首先,我们来看一下现状。券服务系统目前拥有135个对外接口,这表明其功能丰富且复杂,但同时也可能导致接口间的耦合...
2. 课程现状及存在的问题:农林院校在单片机课程教学上通常定位模糊,缺少与农业院校优势学科结合的特色内容。现有的教学内容偏重理论,实践环节不足,教学方式陈旧,师生互动少,实验设备落后,缺乏实际应用场景...
【互动关系】企业家精神与制造业产业链重构之间存在密切的互动关系。企业家精神作为内在驱动力,能够推动制造业升级,促进产业链的创新和优化。同时,产业链的重构也为企业家提供了新的机遇和挑战,激发他们的创新...
第四章详细阐述了A公司组织管理的现状及其问题,如组织分工不合理、授权不足、合作体系缺陷以及适应战略与环境变化的能力薄弱。这些问题成为了组织重构的出发点。 第五章提出了A公司组织重构的具体设计方案,包括...
在现状部分,我们可以看到,当前的企业智慧数字化运营平台存在着一些问题,如承载业务现状不理想、系统现状不完善等。为了解决这些问题,企业需要构建一个智能、高效、可靠的企业智慧数字化运营平台。 建设的必要性...
通过对A公司的现状和目标的分析,揭示了组织重构的必要性。 【第四章 组织管理状况及存在问题】针对A公司在组织分工、责权利关系、分工合作体系、组织建设和能力培养等方面的不足进行了深入研究,这些问题成为推动...
该研究以A公司为案例,深入剖析其组织管理现状,提出相应的重构设计方案,并规划未来学习型组织的创建路径。 第一章绪论中,研究者指出,在当前经济环境下,企业面临着不断变化的市场需求和技术挑战,组织重构和...