正确才是硬道理?No,KISS!

简介:         最近,看了微软亚洲研究院研究员刘未鹏老师的文章《编程的首要原则》(http://mindhacks.cn/2009/03/09/first-principles-of-programming/),感觉那些答案都蛮有意思的。
        最近,看了微软亚洲研究院研究员刘未鹏老师的文章《编程的首要原则》( http://mindhacks.cn/2009/03/09/first-principles-of-programming/ ),感觉那些答案都蛮有意思的。作为一个准程序员,我也想说两句。

 

        在这篇文章中,作者就“你们认为编程的首要原则是什么?”与网友展开了讨论,共给出了5种答案,包括:获得最多认同的答案;获得第二认同的答案;一些众所不一定周知的答案;一些众所很可能周知的答案和最幽默的答案。其中,“KISS(Keep It Simple Stupid)有意思的,它要求程序要尽量简单,越简单越好。

 

        在有关程序设计语言(像《C程序设计》)和算法(像《算法设计与分析》)这类书上,前辈们总结了好的算法或程序需要具备的几个特性,有:正确性、简明性、效率和最优性,而正确性是排在最前面的。因此,不管怎样,我觉得,“编程的首要原则”是要确保程序的正确性,非简单性。

 

       作为菜鸟级程序员,我们不可能有多么高超的编程技巧,这时首要的就是要保证自己编出来的程序是正确的,要让人能够看懂。在水平有所提升以后,除了正确性之外,再考虑其它方面的东西,像简单或最优等。

 

        大家都经历过很多考试,在考试之前,我们都会接触到很多解题的技巧,都会用好几种方法来解答一道题目。但上了考场之后,才发现时间根本不够用(特别简单的考试除外),做完题都难,还不要说用技巧了,这时就要首先确保正确性,要保证高的正确率。编程也一样,每个人的任务都很多,时间也比较的紧迫,有时能够编出来都难,更不要说要让程序简单、优化了。

 

        因此,正确性才是编程的首要原则!



---------------------------------------------------------------------------------------------

        2015年4月2日修改:

        最近重读了这篇三年多之前写的文章,似乎明白了为什么很多软件产品越做越差,最终走向了“万劫不复的深渊”。因为很多人编写程序的想法和我当时的想法一样:先保证程序正确、功能正常,其它的以后再说。

        在我参与过的软件开发项目中,有些时候,版本的开发时间非常的紧。在最初的会议上,开发经理就明确要求优先保证功能的实现,其它的留待以后优化。而当软件版本发布之后,就再也没有人提程序优化的事情了。下次有新需求的时候,大家才会发现上一个版本的程序写得是多么的糟糕。但没有人想到要先对程序进行优化甚至重构之后再实现新的需求,而是“破罐子破摔”,继续在低质量的代码上编写低质量的代码。如此一个恶性循环,最后的程序是千疮百孔,已无力回天。

        那为什么要提倡“KISS”(Keep It Simple Stupid)呢?“KISS”意味着程序有以下特征:

        1) 排版工整、变量命名规范、注释得当。

        2) 逻辑清晰、接口定义清楚、函数封装得体。

        3) 可扩展性强、便于维护。

       “KISS”同时也是实现程序“正确性”的最佳途径,因为简单意味着无错,或者是即使有错误也能够被及早发现。遵循“KISS”原则,那么设计程序时采用的便是最简单直接的方法,逻辑清晰,不管是对于作者本人,还是对程序进行评审的人而言,都能够迅速理解程序实现的功能,bug很难生存。 

       如何检验一套程序是否是好的程序?我认为,如果一个新手能够很快将程序看懂并理清程序的逻辑,那么这个程序就是好程序。

        “第一次就将事情做好”,每个开发人员都应该将这句话牢记心中。Duang,说起来容易,做起来难。确实,大家在实践中去学习吧。


目录
相关文章
当九年义务教育的精英,遇上十年寒窗苦读的翘楚,必将擦出耀眼的火花!
这一组古今搭档,因为语言差异,总是能逗的人捧腹大笑,这不,美好的一天又开始了~
当九年义务教育的精英,遇上十年寒窗苦读的翘楚,必将擦出耀眼的火花!
不要争了!技术选择没那么重要
摘要: 技术没有高下之分,做好产品才是王道。 很多开发者非常热衷于比较不同技术,比如:Angular 是否比 Vue.js 更好?Node.js 能否取代 Java?究竟应该选择 MySQL 还是 MongoDB 呢? 认真对比不同技术之间的优劣是非常有价值的事,可以加深我们对技术的理解,根据业务场景选择更合适的技术。
3790 0
确认过眼神?上云之路需要遇上对的人!
在“上云就上阿里云”解决了上什么云的问题之后,如何上云成为企业技术人员头疼的问题。业务系统云上应用基础架构应该如何设计、系统存储与数据库如何才能平滑迁移等等成为企业上云之路的障碍。为了解决企业上云前的痛点,阿里云支持与服务团队重磅推出咨询与设计场景下五款专家服务产品。
IT人士如何扛起工作生活两座大山
当我们年轻时,初入职场,意气风发,恨不能倾尽所有精力工作,奋发图强、建功立业。当我们有了家庭,发现我亦凡人,事业家庭想两手抓,却两难兼顾。后来,我们发现工作生活两顾本身就是一个幻想,我们做的,只有尽量使之平衡。
2289 0
比肩雪梨张大奕,网红于momo身边有个秘密武器
10月25日,刚忙完淘宝店店庆的于MOMO抽空飞到深圳。她不是来拍照,也不是来工厂看订单,而是参加福布斯中国举办的活动。作为优秀创业者,她入选了2017福布斯中国30位30岁以下精英榜。 在各自不同的领域,这些上榜的年轻人们正在用自己的力量改变世界。
2717 0