软件开发中的重要原则

软件开发中的重要原则

原则,是在编程技巧、编程语言、设计模式、工具之下的最底层的东西,它是人们在几十年的软件开发过程中不断经历、提炼出来的重要经验,体系了软件设计、开发过程中的设计哲学。

随着技术和时代的发展,这些原则可能不断演化和发展的。但几十年之后回头看,软件开发的重要原则是很稳定的,很多思想穿过时间的隧道,依然指导着今天的软件开发。

结合《201 principles of software development》和自身的以往开发经验,将本人认为最重要的一些原则总结如下。

1 真正理解你的任务和目标

不论你是项目负责人、产品经理、开发和测试等人员,都必须真真正正、彻彻底底的理解你的任务和目标。阅读需求文档是原因不够的,根据我的体会,一般的项目的描述文档能让你理解达到30%,写的非常丰富的文档也不会让你对这个项目的理解超过50%。还需要怎能做呢?

A 找到关键人进行小会交流。小会不要超过4个人,面对面阐述和问答。

B 一次交流不要太长,否则信息难消化。

C 不要期望开2次会就搞定,要反复进行。

D 要自己独处思考

E 需要时间。再聪明的人也无法2天理解一个复杂的任务。

2 十个月太久了,给你十个人,一个月搞定

昨天微博上看到碧桂园老板提议。为了提高项目周转效率,他算了一笔账:一个项目需要一个设计师10个工作日,如果改成临时招5个设计师,通宵工作一晚搞定项目,再休假2天。人力成本不变,公司项目周转率将多么牛!

这个经典的问题在20年前的人月神话中就阐述过,1人工作10月 不等于 10人工作1个月。可惜时间过了这么久,也有很多人不理解问题本质。

现在有个任务,需要孕育生个小孩。老板一听生个孩子要10个月,太久了,给你十个人,一个月搞定。

目前的工作日益复杂,不是简单的重复劳动(如果有这样的工作,那是机器的最佳取代目标),加人的作用是有限的。越复杂的工作,人多的帮助越有限。软件开发需要保持合适的团队规模,精英团队,再加上最够的探索研究和开发迭代时间,才能有好的成果。曾经的一个互联网产品中,我们的全部团队仅5个人(还要依靠公司后端的基础设施、行政、财务、人力等服务),就完成了一个产品的上限运营。

3 质量第一,但也要关注时间、成本等其他目标

质量第一,首先确保代码的正确性,同时考虑代码的合理性、可读性、扩展性、可维护性,更高的要求是注意代码的可复用性和可检测性。

以上是从代码层面关注的质量,从用户的层面,可能会有完全不同的对质量的定义。这是开发人员可能忽略的地方。

如果用户是在高度紧张的场景下使用这个软件,那么质量标准则为快速的响应时间;如果这个项目的经费很少,那么在很低的成本下满足用户的需求则是质量的要求;如果这个项目的客户对自己的需求也搞不太清楚,这时软件的高质量意味着能满足用户明面上的和潜在的需求;有时候面对剧变的市场,快速推出产品就是质量的要求。特别是互联网产品有时候要求快速上线、反馈和迭代进化,在以前的一个项目中,我们需要在3个月内完成产品设计、开发、测试、外部接口对接、上线运营,时间这时也是质量的重要维度。

4 Keep Code Simple

A 一个函数只干一件事

我曾经在一个函数中完成多个事情,就既取数据文件,又进行数据处理。表面开起来效率很高,一下子完成好多事情,而且写代码写得快,快了5分钟。但是一旦出现bug(代码中调试bug的概率非常高),要经常的定位问题的原因,可能多花费了半小时。

B 模块要封装,数据也要封装

C代码是给人读的,其次才是给机器读的。

代码的可读性非常重要,不要对代码进行“优化”,让这个代码运行起来更快,节约了0.001秒,而破坏掉代码的可读性。

因为当你过2个月再看到这段代码时或其他人接受你的代码时,就麻烦了,修改和维护的代价相当大。

D pyton函数不要超过30行,c++函数不要超过2屏幕。

5 文档

A 代码中要有注射,先写注释,有利于梳理思路,再写代码

B 书中强调完备规范的软件文档,但最近几年流行敏捷开发则强调可用的软件和产品要重于文档。文档详略程度建议更加项目实际情况来定。

猜你喜欢

转载自blog.csdn.net/zhangqiangbeijing/article/details/81507657