`
javatgo
  • 浏览: 1128058 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

进化中项目进展

 
阅读更多

最近这些年,越来越多的人开始转向敏捷开发。各种敏捷开发技术并不新鲜,大多是在80和90年代发展形成。但只是在最近这些年,程序员和(更重要的是)一些商业顾问,架构师,客户开始变得喜欢和拥抱敏捷开发。

进化中的需求

现在的一种普遍的认识是,在开始编码前,你不可能把所有的需求都写完备。这些需求的确定是一个逐渐发展进化的过程。使用短开发周期/springts,我们一步步的开发程序,使用多次迭代的方式完成从客户方得到的最新需求。这些都是基于一个进化的思想。就像生活中,我们总是通过一步步的改进来达到最好一样。

进化中的代码!

可是,这就完事了吗?如今大部分的程序员都认识到了需求必定是一步步的挖掘出来的。但他们却忘了自己的工作!?他们仍然认为他们的框架和架构在项目开始之初就定型了。同样,代码一旦写成,程序就完成了…不是吗?

错。以我的经验,所有好的程序都至少要写两遍。第一编是你过于仓促,不能很好的理解需求、实现需求。不错,当看到了某种业务模式,我们知道要提炼出方法,围绕着它实现业务职责。你最终写成的代码是非常好的,但,它不是优秀的。

在我们目前的项目中,几乎所有的重要功能模块都从头重写过数次。慢慢的但明显的,代码变得越来越好。一旦你对某段程序做了第三或第四次增补,或又找到了一个bug,你能感觉到这程序什么地方有异味。你开始躲避触碰这段程序,你为不需要在处理这段程序而高兴。当有了这样的感觉后我会怎么做?我会删了这些代码。

可是…可是…这样你就要完全从头开始了!?

你又错了!当然,IDE里空了,代码全没了,也许一些测试程序会存留下来。但你却对你的代码应该做什么有了扎实的认识。你也知道以前这段代码是什么样的,你知道它以前的内伤和异味在哪里!有了这些认识,你能写出更好,甚至是非常优秀的代码!不错,我们也可以保留这些代码,使用一些重构措施…但你可能再也找不到这样好的从头开始、更好的编写它的机会了。

再次,就像生活中的所有事情:要让事情变的完美,你需要经过多次的进化迭代。对你的需求是这样,对你的架构和代码也是如此。

写两遍,就意味着两倍的时间吗?

当告诉人们我的观点是所有的程序都至少写两遍时,他们担心花费两倍的项目时间。但事实远非如此。下面是原因:

  • 第二次写代码只是用去你初次写代码的很少一部分的时间。
  • 重写之后,代码的质量会有明显的提高,可维护性,可扩展性都有改善,包括编程的速度。

祝你好运,坚持重新改进你的代码!

1
2
分享到:
评论

相关推荐

    人工生命试验项目最终目标是创建“有自我意识表现”的模拟生命体

    这是一个人工生命试验项目,最终目标是创建“有自我意识表现”的模拟生命体。本次更新在目录history\014_3cells下。在上次更新里已经说过了,为了实现模式识别,可以先从最简单的几个细胞的场景开始做起。于是就一路...

    【推荐】网络安全中的漏洞挖掘实践合集.zip

    如何从高赏金项目中拿到高危 如何去挖掘物联网环境中的高级恶意软件威胁 如何在3个月发现 12 个内核信息泄露漏洞 沙箱内持久化.行之有效的沙箱攻击新思路 深度解析Weblogic_XMLDecoder反序列化 使用...

    软件工程知识点

    甘特图表是一种常用的项目进度图表,可以直观地描述项目任务的活动分解,以及活动之间的依赖关系、资源配置情况、各项活动的进展情况等。 四、软件需求分析 1.需求分析任务 (1)用户需求 用户需求是用户关于软件...

    2016大数据技术大会

    ​下一代实时数据处理引擎——Apache Apex项目简介及应用 ​Yita:基于数据流的大数据计算引擎 百度大数据离线计算平台发展历程​ DCOS on YARN在中国移动的实践 携程Spark算法平台及其应用 基于大数据的个性化出行...

    数学建模方法:蚁群算法

    房地产开发项目投资组合优化的改进蚁群算法 一种改进的蚁群算法用于灰色约束非线性规划问题求解 一种自适应蚁群算法及其仿真研究 一种动态自适应蚁群算法 蚂蚁群落优化算法在蛋白质折叠二维亲-疏水格点模型中的...

    [计算机毕设]基于java的蚁群算法路由选择可视化动态模拟设计与实现(项目报告+开题报告).zip

    在过去的10多年,蚁群算法(ACO)的研究和应用取得了很大的进展,大量结果证明了算法的有效性和在某些领域的优势。蚁群算法是一种新型的模拟进化算法, 研究表明该算法具有并行性, 鲁棒性等优良性质。本文阐述了蚁群...

    程序员需要经常刷题吗-software-development-best-practices:[敏捷、工作流、用户故事、线框、tdd]

    是线性方法的一个很好的例子,在这种方法中,项目的进展从一个团队稳定地流向另一个团队。 由于模型的刚性,它“容易”管理。 瀑布式组织中的新项目往往会发生什么? 敏捷方法论 敏捷软件开发是一组软件开发方法,...

    适配体及其研究进展 (2013年)

    综述了适配体的筛选方法以及近几年来在分析检测、食品安全、临床医疗等...它可以通过指数级富集的配体进化技术(SELEX)从体外筛选而得。适配体类似于抗体而优于抗体,愈渐成为各种研究项目、检测方面等的重要课题之一。

    FuturICT:FET 旗舰试点项目-研究论文

    整合 ICT、复杂性科学和社会科学这三个组成部分将导致范式转变,促进 ICT 与社会的共生共同进化。 来自我们复杂的全球 ICT 系统的数据将用于开发技术社会经济系统模型。 反过来,来自这些模型的洞察力将为新一代...

    毕业设计-java基于蚁群算法路由选择可视化动态模拟(论文+开题报告+翻译+任务书+外文翻译)

    本文阐述了蚁群算法的原理,详细的说明了蚂蚁算法中各个功能模块,并介绍了该算法在理论和实际问题中的应用, 并对其前景进行了展望。 路由算法往往具有下列一种或多种目标: 最佳性、简单性、稳定性、快速收敛性及适应...

    CMM综述

    它是对于软件组织在定义,实现,度量,控制和改善其软件过程的进程中各个发展阶段的描述。他通过5个不断进化的层次来评定软件生产的历史与现状。CMM的诞生信息时代,软件质量的重要性越来越为人们所认识。软件是产品...

    软件工程-理论与实践(许家珆)习题答案

     软件特征:开发技术有很大进步,但未获得突破性进展,软件价格不断上升,未完全摆脱软件危机。 3. 什么是软件危机?其产生的原因是什么? 答:“软件危机”(Software Crisis)的出现是由于软件的规模越来越大,...

Global site tag (gtag.js) - Google Analytics