软件开发中的重要原则

软件开发中的重要原则

 

 

 

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

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

结合《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 书中强调完备规范的软件文档,但最近几年流行敏捷开发则强调可用的软件和产品要重于文档。文档详略程度建议更加项目实际状况来定。