看到书中第三章的标题,已经隐隐知道作者要讲述的情节。看完全章节后,果然不出所料,同时产生强烈地共鸣。下面从三个方面来阐述自己对于软件开发小步快跑的理解。
(一)开发方式中的小步快跑
在软件开发中,选用传统瀑布模型的开发方式越来越突显它的弊端。现在更易为项目组所认同的是敏捷迭代模型的开发方式。迭代的特点就是典型的小步快跑,它将一个项目化整为零,分为几个冲刺阶段,每个阶段都只针对当前开发的那部分内容。在整个开发过程中,与客户充分交互,同时不断对客户发现的问题及时修正。由于将完整的项目拆分成小阶段,步伐比对较小、频率快,加上沟通比较顺畅,最后开发出来的产品往往比较容易得到客户的认可。而反观传统瀑布模型的开发方式,步伐太大,节奏缓慢。为何这样说呢?开始的需求阶段与最后的测试验收阶段,与客户交互较多,而中间阶段则很少与客户交流,及时通过互动来纠偏。出现需求与测试验收两头重,中间轻的情况,步伐不可谓不大!由于中间环节与客户的沟通不到位,造成最后开发的产品与客户预期有相当大的差距。项目的最后阶段就是不断地修改代码,苦不堪言,极大打击项目组的积极性!因此也常常造成项目的延期,进展相当慢。这里所说的情节与书中出现的可能会有一些差别,但是书中提到:在整整数月的时间,我们都无法知道,我们做得对还是不对。这一点与上文所述相同,所以不约而同地,小步快跑就成为大家普遍认同的开发方式。
(二)编码工作中的小步快跑
相信很多人提到重构,都会自然而然地想到那本名著《重构——改善既有代码的设计》。初写代码,很想快速写出漂亮的代码,抛弃新手的帽子。书的内容还没有完全看完,就有了一种修改代码、优化代码的冲动。可到底应该大刀阔斧地重构,还是小步快跑地重构,相信看完下文你心中会有答案。开始接触重构时,看到代码中有不少地方需要“动手术”,就噼里啪啦一阵猛改。改的时候那个舒坦劲就别提了,可是因为没经验,大幅度修改的过程中没有及时跑一跑代码,看看结果是否一切OK。到最后满心期待地运行代码时,整个人就傻了,为何那么多BUG?!接下来的时间真的惨了,不断改不断出现BUG,原来感觉有“臭味”的代码运行得好好的,可是后来感觉“香气四溢”的代码却怎么也跑不起来!焦急、无助、困惑……回头认真看书,细细品味。接下来,那个豪气冲天的修改方式没了,取而代之的是频繁地小幅修改,并及时验证修改的准确性,真正品到小步快跑的好处。
(三)将小步快跑走得更彻底些
书中运用小步快跑的方式,通过一段不断重构的代码进行演示。对于作者给出的最终代码,个人觉得可以进一步优化。对于三八妇女节、五一劳动节、情人节之类的各种节日,我认为应该单独提出来成为一个节日类,用于统一维护所有的节日。这样以后增加新的节日时,只需对这个类单独修改即可。使用这个类时,通过传入Date由该类自行判断是否为节日,如果是节日则返回该节日的名称。不知这样是不是更合理些?
重构是我很感兴趣的一个话题,期盼拜读作者的佳作!
分享到:
相关推荐
随着AI技术的进步,我们不断深化对自然规律的理解,并应用这些知识去改造自然,以满足人类的需要。AI技术的发展使我们能够以更高效和精准的方式模拟、分析和预测自然现象和过程。 其次,自然辩证法强调事物的发展是...
谈谈我对微课程的理解.doc
谈谈你对面向对象编程的理解
谈谈你对JVM的理解?
"谈谈我对攻读计算机研究生的看法" 本文讨论了攻读计算机研究生的看法,强调了计算机学院的重要性和软件学院的不足之处。作者认为,攻读计算机研究生的目的是为了提高自己的理论水平和实力,而不是为了拿到一个学历...
谈谈你对生命的理解.docx
色彩原理是视觉艺术和设计领域中的基础理论,它涉及到我们如何感知和理解周围世界的颜色。色彩的形成主要有三个因素:光源色、物体色以及环境与空间的影响。 光源色是指不同光源发出的光线,它们含有不同比例的光波...
谈谈对不正当利益的理解.doc
标题中的“谈谈我对Qt的理解 (2)”表明了本文作者对Qt框架有深入的个人见解,主要探讨了Qt在嵌入式开发中的应用、其跨平台特性和库的概念,以及作者在学习Qt过程中对不同模块的理解。描述部分由于缺失,无法提供具体...
我对生态文明建设的理解.doc
因此,深入理解Qt不仅需要掌握基本的库函数和开发工具,还需要对相关领域的知识有所了解,如网络编程、多媒体处理、数据库操作等。随着技术的不断发展,Qt的复杂性和应用场景也在不断扩展,对于开发者来说,持续学习...
谈谈我对转基因食品的看法文.pdf
结合实际谈一谈你对教师法中规定的教师享有的各项权利的理解和认识.pdf
谈谈对生态文明的理解和认识.doc
第01讲丨谈谈你对Java平台的理解?.html
首先,理解否定之否定规律的关键在于把握事物内部的肯定因素和否定因素。肯定因素维护事物的现状,而否定因素则促使其变化。在事物发展的初期,肯定因素占据主导地位,但随着矛盾的深化,否定因素逐渐增强,最终导致...
【计算机软件测试技术】 ...综上,软件测试是一个涉及多方面知识的复杂过程,它需要对软件开发有深刻理解,熟练运用各种测试方法和工具,以确保最终交付的软件产品能够满足用户需求,具备良好的稳定性和可靠性。
每个模块都对应特定的技术领域,如 QNetwork 需要对网络编程有一定理解,而 QtWebKit 则涉及网页渲染和交互。 在实际应用中,Qt 往往与其他技术结合,如在嵌入式电视浏览器开发中,可能需要结合 WebKit 技术实现...
Struts 是一个基于 Model-View-...虽然现在有许多更新的框架(如Spring MVC、Struts 2等)替代了Struts 1,但其基本原理仍被许多现代框架所继承和借鉴,因此对Struts的理解对于理解Web开发的历史和现状都有重要的价值。
【标题】:“我对数据库的理解” 在信息技术领域,数据库是一个至关重要的组成部分,它是存储、管理和检索数据的核心系统。本文将深入探讨我对数据库的理解,包括其基本概念、类型、工作原理以及在实际应用中的重要...