中国五千年文化造就了我们诸多的性格,其中之一就是好大喜功,这尤其反映在中国的软件产业。不错,我们确实拥有数量巨大的网民,拥有无与伦比的庞大市场与用户需求,但这并不足以让我们的步入世界领先行列。在巨大的市场优势面前常常让我们有些迷离,有些飘飘然,有些盲目地民族自豪感,喊出诸如“赶英超美”的口号。然而,客观地讲,我们现在却是差距巨大。
也许你觉得我这话有些崇洋媚外,但静下心来仔细分析我们自己设计的软件,我们注重了软件质量了吗?我们在如履薄冰地进行每一次设计了吗?我们的每一个系统都在编写高质量的代码了吗?也许每个项目的第一个版本我们做到了,但随着软件生命周期的延续,与软件需求的不断变更,我们真的越来越难以拍着胸口说,我做到了!这就是当今中国软件之殇:没有高质量的软件设计,哪来高质量的软件系统?
所以,作为中国软件业中的一员,你应该仔细反思了。下面这篇文章,一个真实的故事,也许可以给你许多的感悟:
2012年,我接到一个任务,对公司一个运行了十年之久的软件系统开展课题研究,使其能够由现有的省集中的运营模式,改为全国集中的运营模式。将原有的,每个省一台服务器的运营模式,改为将所有业务都集中于一台服务器进行运营,毫无疑问,这是一个性能问题,通过加入缓存、分布式处理、数据库分区、读写分离等技术,从而解决大并发访问与大数据量处理,问题就解决了。起初,我也是这样认为的,但我真正深入到这个软件系统的程序代码中时却发现,问题不是想象中那么简单。
虽然之前也有所耳闻,但我真正深入到代码中时,还是感到十分的震惊。整个项目中,一个类数百个方法,一个方法数千行代码的地方,比比皆是。当你游走于数百个方法,或者数千行代码中时,即使像我这样工作了十多年的老手,要读懂也是相当困难,更别说那些刚毕业的新同学。此时,我意识到,如果不改变现有的代码结构,这个系统真的无法承载任何的技术改造。
我造访了参与这个系统多年的老员工,那些“元老”们。他们告诉我,这个系统其实在最开初设计上还是很不错的。然而,经历是十年的维护,各种功能需求,加加减减,不断更新,版本升级上百次,问题就变得越来越大。随着人员的流动,一些代码变成了盲区,谁都不明白它的意思,同时谁都不敢去对它有任何修改,除非迫不得已。每个新员工加入,都不敢轻易修改原有任何代码,而是在原有代码的基础上不断添加代码。这样,随着功能的不断变更,新添的代码就想肿瘤一样不断膨胀,最后由数百行代码扩展成数千行代码,由数十个方法扩展成数百个方法,代码质量不断降低。
慢慢地,程序员越来越看不懂代码了,但他们又要完成自己手头的工作,因此开发工作变成了一种冒险。那么公司怎么能保证每次上线的新程序是正确的呢?那就是测试,投入巨大人力与时间的测试。由于程序越来越复杂,每次修改的测试成本都变得巨大。而这时,由于开发人员觉得,测试人员总数能测出问题来,所以自己只负责开发就可以了,所有的验证工作统统交给测试人员。毫无疑问,这个项目已经陷入了一阵难于自拔的恶性循环之中。维持现状已然疲于奔命,何谈任何技术改造?
然而,我认为这不是一个个案,而是一种普遍现象。大家想想,哪个软件公司没有运营数年的遗留系统?哪个系统不是遭遇频繁变更?在这些系统经历了数十次变更以后,谁还敢拍着胸脯说,我们的设计依然很清晰,我们的代码依然很优质,恐怕不能。
“就这样吧,好死不如赖活着!”也许大多数人都会这样想,然而却不包括我。我从业数十年就一直是一个救火队员,去拯救那些无法再运行下去的软件系统。我很少开发新的系统,总是在半途去接手一个老系统。这些系统起初代码都十分凌乱,维护十分困难。但是在我接手之日起,事情开始变得好转。我总是在不断改造它们,优化它们的代码,使它们慢慢变得易于阅读、容易维护、容易变更。慢慢地,我们的维护工作变得越来越轻松,我们开始喝着咖啡,听着音乐,享受编程生活。我采用的方法就叫“重构”。
重构不是高端大气上档次的华丽名词,也不是病入膏肓才拿出来唬人的终极杀招。它不是将原有系统改得面目全非,更不是拿着代码一阵瞎改的鲁莽之举。而是一种科学而稳健的持续改善。经过多年的工作实践,我深深的感到,这种方法是解决中国软件之殇的最有效方法,因为:
1.假如你在维护遗留系统,这个遗留系统本身的设计并不好,代码质量存在问题,那么你可以采用这种方法,持续而稳健地改造,最后将软件的维护纳入到一个良性的循环中来;
2.假如你是一个设计者,你在设计一个新系统,但你的设计能力不足够优秀,不知道怎样适应今后的变更,那么没有关系,思考今天的设计。因为有了重构,我们不用担心日后的变更。这样每个人都可以编写出高质量的程序代码;
3.假如你是一个遗留系统的维护者,你发现原有的程序不能适应新的需求,那么没有关系,通过重构先改造原有系统,以适应新的需求,再添加新的需求。这样做,你会发现你很容易设计出高质量的代码,使得新功能的加入不会降低原系统的质量。
当所有软件企业都做到了这些,那么中国软件的质量就开始提高,中国软件业才真正能够腾飞。为此,我将我多年的经验汇聚到《大话重构》这本书中,期望给大家更多的启迪!大家可以在当当、亚马逊、京东、china-pub等网上书店搜索,也可以在豆瓣、51CTO、IT168文库等网上试读。详见:
http://product.dangdang.com/23449367.html
相关文档
遗留系统:IT攻城狮永远的痛
需求变更是罪恶之源吗?
系统重构是个什么玩意儿
我们应当改变我们的设计习惯
小步快跑是这样玩的(上)
小步快跑是这样玩的(下)
代码复用应该这样做(1)
代码复用应该这样做(2)
代码复用应该这样做(3)
做好代码复用不简单
软件可以这样功能扩展
过程扩展与放置钩子
特别说明:希望网友们在转载本文时,应当注明作者或出处,以示对作者的尊重,谢谢!
分享到:
相关推荐
总的来说,"中国软件产业高级管理人员培训班"是一个综合性的教育项目,旨在通过全面的课程设置和实践教学,提升中国软件行业高级管理者的综合素质,推动整个行业的繁荣和发展。参与者将在此过程中学习到如何在全球化...
4. **对中国软件产业的反思**: - 自卑感源于中国软件工程水平与国际标准的差距,这可能是由于缺乏系统化和标准化的教育、管理和开发实践。 - 民族劣根性的问题被提及,指出了中国工程师的个体主义倾向和频繁的...
在中国工业软件的发展历程中,面临着一系列的挑战和反思。工业软件是支撑制造业信息化、智能化转型的关键,但目前我国在此领域的基础薄弱,与国际先进水平的差距显著。 首先,国内工业软件缺乏深厚的技术积累和专业...
总结来说,工业软件是推动现代工业革命的关键力量,它的发展历程、技术挑战以及在不同应用场景的成功案例,共同构成了一个丰富的知识体系,对于理解和促进我国工业软件产业的进步至关重要。随着技术的不断迭代,我们...
这部分内容还涉及了策划人对于中国软件产业发展的反思和展望,他指出了中国软件产业尽管有着雄厚的人才基础和足够的发展机遇,但与印度等国家相比,依然存在较大的差距。策划人提出要深刻反思中国软件产业落后的原因...
总的来说,《走出软件作坊》的主题是对中国软件行业现状的深刻反思,倡导的是从个体英雄主义向团队协作、从无序混乱向有序规范的转变,旨在推动中国软件产业的升级和进步。通过不断学习和实践,我们可以逐步摆脱作坊...
7. 中国软件业现状的反思:对中国软件业缺乏核心技术的现状提出关注,呼吁更多人关注并发展核心技术,而不是仅仅停留在口号和概念层面。 8. ISO9000与项目实践:提及ISO9000等标准在具体项目中的应用问题,反映出...
《对Linux的几点反思》这篇文献主要探讨了Linux操作系统在发展和应用中的若干关键问题,以及如何正确理解和对待这一开源软件。以下是对其中主要观点的详细解析: 首先,作者强调了使用具有自主知识产权的软件的重要...
2021年中国低代码/零代码(LCDP/NCDP)产业研究报告揭示了这一领域的显著增长。低代码/零代码平台的初衷是为了提升IT生产效率,但随着时间的推移,它们已经开始改变IT的生产关系。自上世纪80年代起,从可视化的程序...
2021年中国低代码/零代码开发平台(LCDP/NCDP)产业迎来了快速发展,市场规模超出预期。随着数字化转型的步伐加速,企业和组织对快速构建和部署应用程序的需求日益增强。低代码/零代码平台通过提供图形化界面和拖放...
2012年齐鲁软件大赛是一项旨在推动中国软件产业发展,激励技术创新,培养优秀软件人才的年度竞赛活动。这个赛事在山东省济南市举办,以其广泛的影响力和专业性,吸引了众多高校学生、科研机构以及软件企业的积极参与...
疫情促使企业反思和加强产业链建设,通过数字化技术升级产业链上下游交互模式,强化产业链的弹性、协同性和抗风险能力。 第五,云边协同架构崭露头角。面对物联网数据增长,边缘计算开始与云计算结合,提供更快的...
然而,随着改革开放的深入,市场化进程对工业软件产业带来了巨大冲击。90年代,虽然国产工业软件企业如雨后春笋般涌现,市场占有率一度达到25%,甚至在某些专项领域高达45%,但它们面临着“叫好不叫座”的尴尬局面。...
《2023年中国智能矿山行业研究报告》由甲子光年智库研究团队发布,深入探讨了智能矿山领域的关键议题,旨在推动中国采矿业的科技化转型。报告分为四个部分,分别关注行业升级需求、智能矿山建设进程、智能矿山的破局...
金企通公司是一家专注于物流和航运管理软件的高新技术企业,自1997年成立以来,一直致力于推动中国物流业的信息化进程。该公司拥有丰富的行业软件开发经验,并以创新的产品引领市场,其产品已经达到国际先进水平。...
除了硬件设施,国泰农机产业园还注重软件服务的完善,提供包括物业管理、商贸交流、物流流通、信息网络、人力资本和行政代办在内的全方位服务。其目标是打造一个七星级的园区服务体系,以吸引国内外知名品牌入驻,...
全球软件产业的稳步发展以及PDF电子文档产业的良好市场前景是推动行业发展的主要因素之一。互联网的普及为PDF文档的广泛应用奠定了用户基础,个人电脑和智能手机等终端设备的快速发展也为行业发展提供了支持。此外,...
结合德国的“双元制”、日本的“产学合作”、美国的“合作教育”以及澳大利亚的TAFE学院的成功经验,职业教育应该积极探索适合中国国情的教学模式,持续改进和完善任务驱动教学法,以适应快速变化的行业需求和技术...