优秀的代码是反复修改后创造出来的
近些年来,越来越多的人开始转向敏捷开发,而且这些敏捷开发的技术已不再新鲜,大多都是在80和90年代设计形成的。但是,最近几年,程序员,特别是一些商业顾问,架构师和客户开始喜欢上了敏捷开发。
不断进化的需求
现如今,有一个普遍的认识就是在你开始项目编程之前,你不可能写下所有的需求,这些需求的确定需要一个不断进化的过程。在较短的开发周期中,我们不断的完 善程序,多次迭代从而满足客户提出的最新需求。这些都是基于进化的原则,就像我们的生活,你是一步一步的向前从而做得更好。
不断进化的代码
这就可以了吗?现在的大多数程序员都已经认识到了需求是不断进化和完善的。但还不够,他们依旧认为项目使用的框架和架构应该在项目开始的时候就确定了,而且代码一旦完成,就一切都OK了。
错。根据我的经验,所有优秀的代码都至少要写两遍。第一遍写代码时,你通常会很匆忙,不能很好的理解并实现需求。当然,如果你看过一些设计模式,知道一些方法,你最终的代码可能会写得不错,但它绝不是最优秀的。少写一些无谓的代码,多一些思考。
在我们现在的项目中,几乎所有重要的功能都要从零开始写,并且重复修改很多次。这虽然很慢,但确定的是写出的代码越来越好了。当你修改某一部分的代码已经 三到四次,或又修补了这里的一个bug,你就开始有点想躲避这部分代码,如果不再处理它你就会很高兴。当有了这样的想法后,你肯定会删了这些代码。那就又 要一切从头开始了吗?
再一次错。确实,IDE里空了,代码没了,或许只有一些测试程序还在。但是,你已经对你写的这些代码有了深刻的认识,你知道它是什么样的,你也知道它的问 题出在哪。在此基础上,你现在可以写出更好,甚至是优秀的代码。当然了,我们也可以保留之前的代码,进行一些重构等等,但都不如从头开始,更好的做出它。 这和生活中的道理依然是一样的,要想把一件事做到极致,就要多次的重复和进化。你的需求是这样,你的代码和架构也要这样。
写两遍代码会花费两倍的时间?
当我告诉人们所有的程序都要至少写两遍时,他们担心这样会使完成整个项目的时间加倍。但事实不是这样的,我来告诉你原因:
1.第二次写代码,只会花费你第一次写代码时的部分时间;
2.重写之后的代码在质量上会有显著提高,而且维护性和可扩展性都会更好,你的编程速度也会越来越快。 所以,坚持重写你的代码,不断优化它吧!
来源:51CTO

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
光网络发展趋势:SDN可预见
因谷歌基于“软件定义网络(SDN)”构建的B4网络大获成功,SDN在2012年的时候十分火热,业界普遍认为SDN是未来网络发展的方向,是运营商网络发展的趋势。随着近几年SDN产业由概念到商业部署的快速演进,这项近年来最受瞩目的网络前沿技术如今似乎已成功度过厂商的观望期,获得全球超90%的网络厂商的认可。根据市场研究公司Infonetics Research发布企业和数据中心SDN市场报告显示,2018年SDN全球市场规模有望达到180亿美元, SDN市场真正领导者也将诞生。 从概念走到现实 曾经充满着神秘感的SDN技术,在经过运营商和设备企业的不断探索和尝试下,轮廓终于从一个模糊的概念走到了商用的现实层面。在2013年SDN技术还是处于“测试验证年”,而到了去年,SDN的态势一路走好,其商用的价值也越发地清晰了。 中国电信集团公司科技委主任、SDN产业联盟理事长韦乐平认为,当前的网络架构正在发生根本性变革,从第一代的模拟通信,到第二代的数字通信,到第三代的互联网,而SDN/NFV可以认为是第四次网络变革,它的主要特征是网络的控制和处理分离、网元的软硬件分离、网元虚拟化、网络可编程等。 ...
- 下一篇
《私有云计算整合、虚拟化和面向服务的基础设施》一2.7小结
2.7小结 当前,企业DC正经历着一场范式升级,私有云计算要求一个更灵活、更有效以及更可靠的基础设施,才能够动态自适应地商务需求变化。为了跟上这一趋势,已经建成的DC需要虚拟化技术,而新DC则需要采用模块化方法。通常鉴于虚拟化技术从根本上分离了底层物理设备与其逻辑展现,因此虚拟化在DC整合中扮演了重要的角色。特别地,企业虚拟化包含了服务器、存储以及网络虚拟化,这三大虚拟化领域组成了SOI的三点基石,能够为云IaaS服务提供动态服务平台。另外,因虚拟化而带来的好处还包括:能源消耗、冷却以及DC占用空间的显著降低,并增强了系统可靠性、服务性以及可控性,更重要的是更低的TCO、CAPEX和OPEX。10GE基础设施已迅速成为主流应用,对更快的服务器以及内部交换机连通非常有利,不过由于经典以太网尽力而为的本质,单凭10GE网络本身并不能完成
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库