优秀的代码是反复修改后创造出来的

近些年来,越来越多的人开始转向敏捷开发,而且这些敏捷开发的技术已不再新鲜,大多都是在80和90年代设计形成的。但是,最近几年,程序员,特别是一些商业顾问,架构师和客户开始喜欢上了敏捷开发。

不断进化的需求

现如今,有一个普遍的认识就是在你开始项目编程之前,你不可能写下所有的需求,这些需求的确定需要一个不断进化的过程。在较短的开发周期中,我们不断的完
善程序,多次迭代从而满足客户提出的最新需求。这些都是基于进化的原则,就像我们的生活,你是一步一步的向前从而做得更好。

不断进化的代码

这就可以了吗?现在的大多数程序员都已经认识到了需求是不断进化和完善的。但还不够,他们依旧认为项目使用的框架和架构应该在项目开始的时候就确定了,而且代码一旦完成,就一切都OK了。

错。根据我的经验,所有优秀的代码都至少要写两遍。第一遍写代码时,你通常会很匆忙,不能很好的理解并实现需求。当然,如果你看过一些设计模式,知道一些方法,你最终的代码可能会写得不错,但它绝不是最优秀的。少写一些无谓的代码,多一些思考

在我们现在的项目中,几乎所有重要的功能都要从零开始写,并且重复修改很多次。这虽然很慢,但确定的是写出的代码越来越好了。当你修改某一部分的代码已经

三到四次,或又修补了这里的一个bug,你就开始有点想躲避这部分代码,如果不再处理它你就会很高兴。当有了这样的想法后,你肯定会删了这些代码。那就又
要一切从头开始了吗?

再一次错。确实,IDE里空了,代码没了,或许只有一些测试程序还在。但是,你已经对你写的这些代码有了深刻的认识,你知道它是什么样的,你也知道它的问

题出在哪。在此基础上,你现在可以写出更好,甚至是优秀的代码。当然了,我们也可以保留之前的代码,进行一些重构等等,但都不如从头开始,更好的做出它。
这和生活中的道理依然是一样的,要想把一件事做到极致,就要多次的重复和进化。你的需求是这样,你的代码和架构也要这样。

写两遍代码会花费两倍的时间?

当我告诉人们所有的程序都要至少写两遍时,他们担心这样会使完成整个项目的时间加倍。但事实不是这样的,我来告诉你原因:

1.第二次写代码,只会花费你第一次写代码时的部分时间;

2.重写之后的代码在质量上会有显著提高,而且维护性和可扩展性都会更好,你的编程速度也会越来越快。 所以,坚持重写你的代码,不断优化它吧!

来源:51CTO     

时间: 2024-10-14 18:24:12

优秀的代码是反复修改后创造出来的的相关文章

操作-eclipse不编译修改后的代码,仍运行上一次的结果

问题描述 eclipse不编译修改后的代码,仍运行上一次的结果 好像没进行过什么特殊的操作(运行过一次Tomcat),突然就这样了,修改完代码后,运行,以前都提示是否保存修改,现在根本不提示直接运行上一次的结果,请教各位大神该怎么解决(Android程序和Java都这样,重启,clean都不管用) 解决方案 用debug run试试 别用run 解决方案二: 你试试把eclipse的自动构建的选项给勾上 解决方案三: 居然clean都不好使?选择clean all也不好使么? 还有一个问题可能是

mysql-Java入门新人求解答:如何能保存修改后的网页?求代码

问题描述 Java入门新人求解答:如何能保存修改后的网页?求代码 <%@ page import ="java.util.*" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + ":

jqm列表页传参到表单页修改后再传回来求一个大概的代码流程

问题描述 jqm列表页传参到表单页修改后再传回来求一个大概的代码流程 求一个大概的代码流程,用什么语言写逻辑比较清晰,用的是List集合来模拟数据库 列表页用的是Post传的数据,后台是WebMethod

好的代码至少要修改两遍

近些年来,越来越多的人开始转向敏捷开发,而且这些敏捷开发的技术已不再新鲜,大多都是在 80 和 90 年代设计形成的.但是,最近几年,程序员,特别是一些商业顾问,架构师和客户开始喜欢上了敏捷开发. 不断进化的需求 现如今,有一个普遍的认识就是在你开始项目编程之前,你不可能写下所有的需求,这些需求的确定需要一个不断进化的过程.在较短的开发周期中,我们不 断的完善程序,多次迭代从而满足客户提出的最新需求.这些都是基于进化的原则,就像我们的生活,你是一步一步的向前从而做得更好. 不断进化的代码 这就可

timepicker-android TimePicker 上传修改后的时间到服务器

问题描述 android TimePicker 上传修改后的时间到服务器 TimePicker :把修改后的时间上传到服务器,上传到服务器这段代码应该写在哪里啊? 下面这样写是不行的 解决方案 已解决,上传时参数为秒,比如36000m,后来不知怎么回事上传的参数成了"16:05", 解决方案二: Android TimePicker组件自定义时间 解决方案三: 我觉得应该是可以的,但是你要先判断你的时间是不是真的修改了,如果真的修改了在上传到服务器,没修改就不要传了

c++-C++程序编译出错,帮忙修改,可以的话,把修改后的完整程序发上来

问题描述 C++程序编译出错,帮忙修改,可以的话,把修改后的完整程序发上来 #include #include #include #define max 5 typedef struct{ char b;//存储商品名 //商品日期年.月.日 int year; int month; int day; }Data; typedef struct{ Data a[max];//0为栈底位置 int top;//栈顶 }Stack; //初始化空栈 Stack *initstack(){ Stack

java 运行中读取修改后文件的问题

问题描述 java 运行中读取修改后文件的问题 我用java读取一个txt文件,然后输出里面的内容, File f = new File(path); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f))); System.out.println(br.readLine()); 然后这边打个断点,之后去修改txt的内容. System.out.println("wait"

html代码-discuz中修改论坛页头的图片在哪里改?

问题描述 discuz中修改论坛页头的图片在哪里改? 在discuz中修改论坛页头的图片,可以替换图片,但个人觉得可以通过修改html语句修改, 请问此语句在哪里啊? 解决方案 页头加图片: 解决方案二: ##页头加图片:## ```html <div align="center"> <a href="" target=""> <img src="static/image/common/yetou.png&

quartz 定时器-Quartz 定时器动态修改执行时间修改后出现立即执行情况

问题描述 Quartz 定时器动态修改执行时间修改后出现立即执行情况 问题描述: Spring 启动时加载定时器 执行点为 0 0 12 * * ? * 也就是每天12点执行 在11点左右修改为 0 0 14 * * ? * 也就是让它每天14点执行. 在12点多后又重新修改为 0 0 12 * * ? * 此时定时器立即执行了. 想知道是什么原因? 修改定时器的代码如下:job.getJobExpression() 就是传入的修改的执行时间 /** * @Title: modifyJobTim