最近这些年,越来越多的人开始转向敏捷开发。各种敏捷开发技术并不新鲜,大多是在80
和90
年代发展形成。但只是在最近这些年,程序员和(更重要的是)一些商业顾问,架构师,客户开始变得喜欢和拥抱敏捷开发。
进化中的需求
现在的一种普遍的认识是,在开始编码前,你不可能把所有的需求都写完备。这些需求的确定是一个逐渐发展进化的过程。使用短开发周期
/springts,我们一步步的开发程序,使用多次迭代的方式完成从客户方得到的最新需求。这些都是基于一个进化的思想。就像生活中,我们总是通过一步
步的改进来达到最好一样。
进化中的代码!
可是,这就完事了吗?如今大部分的程序员都认识到了需求必定
是一步步的挖掘出来的。但他们却忘了自己的工作!?他们仍然认为他们的框架和架构在项目开始之初就定型了。同样,代码一旦写成,程序就完成了… 不是吗?
错
。以我的经验,所有好的程序都至少要写两遍。第一编是你过于仓促,不能很好的理解需求、实现需求。不错,当看到了某种业务模式,我们知道要提炼出方法,围绕着它实现业务职责。你最终写成的代码是非常好的,但,它不是优秀的。
在我们目前的项目中,几乎所有的重要功能模块都从头重写过数次。慢慢的但明显的,代码变得越来越好。一旦你对某段程序做了第三或第四次增补,或
又找到了一个
bug,你能感觉到这程序什么地方有异味。你开始躲避触碰这段程序,你为不需要在处理这段程序而高兴。当有了这样的感觉后我会怎么做?我会删了这些代码。
可是… 可是… 这样你就要完全从头开始了!?
你又错了!
当然,IDE
里空了,代码全没了,也许一些测试程序会存留下来。但你却对你的代码应该做什么有了扎实的认识。你也知道以前这段代码是什么样的,你知道它以前的内伤和异
味在哪里!有了这些认识,你能写出更好,甚至是非常优秀的代码!不错,我们也可以保留这些代码,使用一些重构措施…但你可能再也找不到这样好的从头开始、
更好的编写它的机会了。
再次,就像生活中的所有事情:要让事情变的完美,你需要经过多次的进化迭代。对你的需求是这样,对你的架构和代码也是如此。
写两遍,就意味着两倍的时间吗?
当告诉人们我的观点是所有的程序都至少写两遍时,他们担心花费两倍的项目时间。但事实远非如此。下面是原因:
- 第二次写代码只是用去你初次写代码的很少一部分的时间。
- 重写之后,代码的质量会有明显的提高,可维护性,可扩展性都有改善,包括编程的速度。
祝你好运,坚持重新改进你的代码!
分享到:
相关推荐
好的程序需要你至少好好写两遍!最近这些年,越来越多的人开始转向敏捷开发。各种敏捷开发技术并不新鲜,大多是在80和90年代发展形成。但只是在最近这些年,程序员和(更重要的是)一些商业顾问,架构师,客户开始变得...
标题中的“所有程序员都应该至少读上两遍的十篇论文”揭示了这是一份推荐给程序员的重要学术资源列表。这些论文涵盖了计算机科学和技术的多个关键领域,旨在深化开发者对编程本质的理解,提升他们的专业素养。 1. *...
038 同时显示两个文件的内容 039 简单的文本编辑器 040 文件的字数统计程序 041 学生成绩管理程序 第二部分 数据结构篇 042 插入排序 043 希尔排序 044 冒泡排序 045 快速排序 046 选择排序 047 堆排序...
而当时找遍所有的资料,都找不到类似针对ACCESS的控件(VB的RESIZE控件在ACCESS中会出现一些奇怪的现象,主要是因为ACCESS窗体的特别结构),而当时我开发的一个项目需要同时适应800*600 和640*480 两种分辨率,所以...
而当时找遍所有的资料,都找不到类似针对ACCESS的控件(VB的RESIZE控件在ACCESS中会出现一些奇怪的现象,主要是因为ACCESS窗体的特别结构),而当时我开发的一个项目需要同时适应800*600 和640*480 两种分辨率,所以...
CPU 是 PLC 的核心,起神经中枢的作用,每套 PLC 至少有一个 CPU,它按 PLC 的系统程序赋予的功能接收并存贮用户程序和数据,用扫描的方式采集由现场输入装置送来的状态或数据,并存入规定的寄存器中,同时,诊断...
- 清洁人员使用柠檬酸或类似消毒剂彻底清洗池壁和底部,至少三遍。 - 维修人员检查管道、阀门、浮球和水位控制电路,进行必要的维修。 - 清洗完毕后,排放污水,用消毒药水对池壁和底部进行消毒。 - 检查所有...
【二分图】是图论中的一个重要概念,它是指图中的所有顶点可以被分成两个不相交的集合X和Y,且图中每条边连接的两个顶点分别属于不同的集合。这样的图被称为二分图,也叫两色图,因为我们可以用两种颜色对顶点进行...
白盒测试主要是想对程序模块进行如下检查:对程序模块的所有独立的执行路径至少测试一遍。对所有的逻辑判定,取“ 真” 与取“ 假” 的两种情况都能至少测一遍。在循环的边界和运行的界限内执行循环体。测试内部数据...
- 每天至少清洁两次,每周五下午进行深度清洁和消毒。 - 更衣柜和更鞋柜使用专用洁净抹布擦拭。 - 清洗洗手池并彻底冲洗。 - 拖地两遍,确保地面干净。 - 周五清洁包括全面擦拭、天花板刷扫、地面清洁和空气...
设计要求利用 8254 作为音阶频率发生器,应先对至少两段音乐进行编码后存入音符表,并建立好音阶表,每段音符长度不能少于 60 个,每首连续播放 3 遍后,自动播放下一段音乐,几段音乐播完后,循环播放,直到有键盘...
学习资料分享 刚入门,想很快掌握是不可能的,以我自己这两年的学习经验来看,刚入门学习一门计算机语言,教学书你至少要看三遍才能掌握的,第一遍看时可以不必太钻牛角尖,不懂的就跳过去,把难点标记出来。第二遍...
根据给定的文件信息,我们可以总结出以下关于“实验课学生成绩管理系统的程序代码”的相关知识点: ### 1. 文件包含与宏定义 在该程序的开头部分,可以看到包含了多个标准库文件: - `#include "string.h"`:用于...
在IT领域,面向对象编程(Object...不同的排序算法在特定场景下具有优势,例如,插入排序在近似有序的数据上表现优秀,而快速排序通常在平均情况下具有较好的效率。因此,根据具体需求选择合适的排序算法是非常关键的。
在程序设计中,循环控制是不可或缺的一部分,它允许程序员重复执行特定代码块,直到满足某个条件为止。在C语言中,有多种类型的循环结构,包括`goto`、`while`、`do-while`和`for`循环。下面将详细讨论这些循环结构...
4. 判断/条件覆盖,程序中每个判断条件的真假值分支至少被执行一遍,并且每个判断条件的内部判断式的真假值分支也要执行一遍,,保证要求情况下,越少越好 5. 条件组合覆盖,每个判断条件的内部判断式的各种真假组合...
在本次实验中,学生需要完成以下任务: 1. **二叉树的建立**:使用先序递归遍历法建立一个二叉树的二叉链表存储结构。二叉树结点的数据类型应选择字符类型,且确保各个结点的数据域值互不相同。 2. **遍历与查询**...
建议在考前一个半月开始准备,通读教材至少两遍,加强记忆,并通过复习巩固知识点。同时,不宜盲目刷题,应根据考试大纲,有针对性地分类整理习题,例如按照计算机基础知识、DOS操作系统知识、编程语言知识和程序...
最后重复一遍两个要点:每小时站立一小会,每天至少活动30分钟。就这么简单。除非体型超重,否则你不需要进行锻炼或者去健身房来抵消久坐带来的负面影响,只需要保证一整天有活动一下,你甚至可以不用放弃长时间的看...
每个程序至少包含一个主函数`main()`,其他辅助函数如`test1()`、`test2()`等,用于完成特定任务。函数定义后需在适当位置调用以执行相应功能。 5. 内存管理:题目中未涉及复杂内存操作,但需要注意的是,数组是一...