1 / 5
文档名称:

防止代码变质的思考与方法.doc

格式:doc   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

防止代码变质的思考与方法.doc

上传人:gyzhluyin 2014/11/22 文件大小:0 KB

下载得到文件列表

防止代码变质的思考与方法.doc

文档介绍

文档介绍:1、软件长期运营存在什么问题
一个大规模的客户端软件的生命周期中,我们可以把它分为两个比较粗的时期。一个是前期的搭建软件的时期,即从无到有的时期;第二个是搭建完成之后,进入的一个稳定的运营时期。第二个时期才是最关键的,在这个时期我们会持续的迭加需求,持续的优化功能,而且第二个时期也是代码在慢慢变质的时期。
在这个时期,你可能会发现:我们的软件慢慢出现模块耦合严重,牵一发而动全身;每个版本都会涌现出老功能的BUG,你没动过的模块也会出BUG;或者改了一个小问题了,带出来很多其他问题;缺乏扩展性,往老模块加新功能非常痛苦;程序的崩溃率越来越高;新员工接手老模块经常不能理解原来的设计思想而改坏;移植一个DLL到另一个软件时,发现必须连带也移植十几个DLL。本文将分享对于这些问题的思考与方法。
2. 软件的积木模型
一个运营型的客户端软件,做出来就是为了长期运营,需要不断的迭加功能。而不是做出来,两三年就重写一次。那么这样一个软件就像堆积木一样。一个软件刚开始写了两千行代码,感觉设计得非常好,模块化扩展性都非常好,性能也非常快,都能很好的面向运营。写了两三年之后,就会出现像这种积木一样的结构,很容易崩塌。所谓重构,形象的说,可以看做是某个积木不稳定,要往里塞一塞。那么整个开发过程,就是一个不断迭代、不断优化、不断重构的过程。对于我们这个积木模形,有什么办法不让一些木条跑出来,这也是我们需要想的思路。我们是不是可以先围四面墙,然后在墙里面再去塔积木?
3. 导致代码变质的两大因素
团队中总是会存在这样那样的问题,这些问题最终总是影响到我们的代码朝着不良的方向发展。对于这些因素,我可以将它们抽象为两大类。一类是人的因素:比如架构设计不合理,需求没考虑清楚,项目进度压力,沟通问题,缺少文档、培训,等等。另一类是时间的因素:比如人员的变动,需求的长期迭加和变更,等等。人的因素是由于人本身的素质或疏忽导致,时间因素是由于时间的长期推进导致,即使人的素质很高也必然会出现时间因素的问题。
4. 代码变乱的微观原因
在上述两大类因素的长期作用下,最终会导致代码越来越乱。如果从微观的角度来剖析,这跟依赖有着很大的关系。代码的变乱,根本原因就是由于太多不良依赖或者模块失去单一性所致。我们来看一下依赖是如何产生的。
    1). 依赖的方式
如下图所示,如果组件A依赖于B,B依赖于C,A也是隐含的依赖于C的。组件A不能单独使用,必须同B和C一起使用。在现实的代码中,可能存在着非常长的依赖链。
依赖的方式也可能是多种多样的,单向依赖、双向依赖、环状依赖或者一个依赖于多个。下图也是一些示例,现实的代码中可能是由各种依赖方式组成的非常复杂的网状结构。
    2). 依赖的变化
在两大类因素的作用下,依赖会发生变化。最常见的变化应该是依赖的箭头越来越多,网状结构变得越来越复杂。如果没有增加新的组件,下图中左边的图往往会变成右边的图。起初设计好的很好的代码,可能是左边的样子,模块具有很好的独立性和可移植性。随着时间、需求、人的变化,很可能由开发人员很随意的一行代码,就变成了右边的图,一条红线就出来了。两个模块变成相互依赖,上面那个模块就不再有独立性和可移值性。
我们的代码从设计之初到现在,中间经过了几年的时间,代码变得越来越乱很大的原因是因为这种红线的持续出

最近更新

防水施工方案 14页

部编版七年级道德与法治下册第一单元测试题及.. 18页

部编人教版2024--2023学年度第一学期l三年级道.. 14页

初一生人6篇 8页

试题精选 四川省梓潼中学2024-2024学年高一上.. 10页

综合素质评价自我陈述报告(最新10篇) 11页

成长作文题目5篇 8页

成长中的泪水十篇 12页

朝花夕拾读后感1000字4篇 27页

溶液的配制步骤及其配置过程中的注意事项 3页

消防安全承诺书模板范文(真题6篇) 11页

薪酬标准方案 6页

老年痴呆有关实验研究报告 6页

江苏省南京市联合体2023-2024学年+上学期八年.. 12页

笔筒改造方案 5页

杭州市城市建筑工程机动车停车位配建标准实施.. 25页

最新2024年熔化焊与热切割模拟题库398题(含参.. 3页

建筑CAD第一至四章的多选题及答案 17页

工程热力学思考题及答案 第四章 3页

小学五年级上册期末数学质量试题测试卷(含答案.. 11页

学前教育)《幼儿园组织与管理》考试试题及答案.. 8页

地下室防水技术交底记录 6页

嘉兴市六年级苏教版上册数学试卷练习题期末试.. 16页

北师大版五年级上册期末模拟测试数学试卷-(含.. 14页

初中竞选班干部演讲稿 7页

2024年防疫工作个人工作总结 33页

五年级数学下册第四单元《练习四》教案教学设.. 3页

信用证结算协议书 12页

甲状腺疾病的流行病学与预防 27页

抗负过载双室供油装置与方法 5页