最近,看了微软亚洲研究院研究员刘未鹏老师的文章《编程的首要原则》( 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,说起来容易,做起来难。确实,大家在实践中去学习吧。

正确才是硬道理?No,KISS!相关推荐

  1. 转载:十年驾车经验总结:活着,才是硬道理

    一个优秀的驾驶员,应该对自己负责.对家人负责.对他人负责,对生命心存敬畏! 现实生活中,违章又无处不在,为什么呢? 原因一.侥幸心理.平时不系安全带,偶尔酒后驾驶,平时闯闯红灯,晚上出来飚飚车,从来没 ...

  2. 品牌才是硬道理——一线、二线主板品牌集中营品牌才是硬道理——一线、二线主板品牌集中营...

    品牌才是硬道理--一线.二线主板品牌集中营 现在的DIY市场可谓鱼龙混杂,令人眼花缭乱,为了让大家把这纷扰看个清清楚楚明明白白真真切切^_^,我准备分期把市场上各配件的常见品牌作以简要介绍,让大家对品 ...

  3. HighNewTech:2019.08.09程序猿界大事件之【你好,我是鸿蒙OS】~【来了,老弟】—技术才是硬道理,开源方能建立新生态!

    High&NewTech:2019.08.09程序猿界大事件之[你好,我是鸿蒙OS]~[来了,老弟]-技术才是硬道理,开源方能建立新生态! 导读       2019华为开发者大会在今日举行, ...

  4. 梦燕服饰:企业数字化走得快不是真本事,走得稳才是硬道理

    一摞摞的布料被铺平,切割成衣服各部位的样式:厂房内的缝纫机不断轰鸣,一件件成衣出现在流水线的尽头,叠放整齐--这是出现在无锡梦燕服饰的繁忙景象. 梦燕是一家以女装为主的连锁零售企业,同时涵盖一部分男装 ...

  5. 提升自己的实力才是硬道理

    个人 如同country一样, 拥有自己的硬实力才是硬道理,其他都是虚的. 提升自己的实力,为他人创造价值,才是硬道理. 知而不行,是为不知. 知道一些道理,却不去做,跟不知道有什么区别.

  6. 坚果投影仪陷入双11刷单漩涡?良性发展才是硬道理!

    2018双11已经过去一周,高潮过后,潜在的问题开始逐渐浮出水面. 一方面,作为买家,是很多消费者买的实际货品与买之前看到的图片相差太大,买之前觉得是"貌美如花",到手试穿却是&q ...

  7. 成长与危险相伴是常态,加强安全审计才是硬道理

    废话不多说,一组数据带你们直观的感受加密货币在2021年是怎样的跨越式发展. 根据比特安数据检测中心多方面调查统计显示,比特币的价格从年初1月1日的28994.01美元到年尾12月31日涨到了4630 ...

  8. 电子行业求职,技术才是硬道理

    http://cv.qiaobutang.com/knowledge/articles/5194a6750cf2f49d1f1de39f 前言: 谈起电子产业(也称电子信息产业),相信每个生活在现代社 ...

  9. 37游戏叫板外国进口 用设计抢滩市场才是硬道理

    近年来,游戏产业获得了前所未有的迅猛发展, 3月6日,由上海三七玩网络科技有限公司主办的首届中国国际游戏大会CIGC在上海世博洲际酒店盛大开幕,本次盛会以"民族游戏,国际视野"为主 ...

最新文章

  1. VC++ 单文档项目显示打开的文件
  2. 【AC Saber】二进制
  3. Jquery实现自动生成二级目录
  4. linux可以不用grub吗,既然不用Win了,那么GrubDOS也不用了。linux grub求指导
  5. log4j输出多个自定义日志文件
  6. gnome2 恢复默认 panel
  7. HDU 2159 完全背包
  8. 【amp;#9733;】SPF(Dijkstra)算法完美教程
  9. 小程序毕设作品之微信小程序点餐系统毕业设计(6)开题答辩PPT
  10. 富士施乐Fuji Xerox DocuCentre-II 6000 驱动
  11. matlab中mcc失败,matlab运行mcc时出现这样的情况
  12. LaTeX 旁注 边注 Marigin Note
  13. Regulator的使用
  14. 超分辨率:Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network论文翻译
  15. 送小公主——哆啦A梦(Python代码实现)
  16. 什么是Markdown?为什么需要使用Markdown?
  17. Vue.js学习笔记 01、Vue基本语法篇
  18. 收银系统显示选择服务器,选择收银系统这几点需要提前知道?
  19. 【04-25】力扣每日一题
  20. Camera2 OpenCamera流程

热门文章

  1. 如何在豆瓣租房小组快速找到满意的房子
  2. 长尾关健词有些什么特征,如何做尾关键词
  3. Linux系统部署ThinkPHP5+Workerman项目
  4. phpexcel数据导出分多个工作区(sheet)
  5. 数据库存储引擎—InnoDB,MyISAM,Memory
  6. 【教程、技巧】Solid Works 2020 开启“小金球”
  7. Cadence Allegro老是调用浏览器弹窗update
  8. css左边是图片右边是文字方法
  9. 【C++11智能指针】shared_ptr的初始化、拷贝构造和拷贝赋值、移动构造和移动赋值
  10. [图]微软再次推出两款适用于Windows 10的免费主题