简介:《编程珠玑》是琼·本特利(Jon Bentley)在《ACM通讯》的博文的总结。琼是世界著名计算机科学家,被誉为影响算法发展的十位大师之一。人民邮电出版社出版了英文版,笔者读来字字珠玑,就想分享一下,摘一些翻译出来,一同鉴赏。
翻译不作商业用途。
1. 关于编程
--越早开始编程,越晚完成。
--要是写不出伪代码,就写不出代码。
--细节很重要。
--要是代码和注释不一致,两者可能都不对。
--特例太多,就是错。
--弄对数据结构,一切迎刃而解。
2. 关于用户界面
--【最小震惊原则】尽可能让用户界面保持上一代的样子。
--20%的用户输入是坏数据。
--80%的输入都在问不必要问的问题。
--别问用户系统已经知道的信息。
--80%数据中95%的信息能图示。
3. 关于debug
--80%的编程错误都是语法错误。剩下那20%中,80%是小小的逻辑错误。剩下那4%中,80%是指针错误。剩下的0.4%很难。
--不要站着debug。站着会分散你的注意力,在调试时需要全神贯注。
--别被注释误导,只调试代码。
--测试可以证明有错误,但不能证明没有错误。
--一个新用户会揭示系统的一类新问题。
--没出问题就别修补。
--解决问题的第一步是复现问题。
4. 关于性能
--【程序优化第一原则】不要优化
--【程序优化第二原则-只针对专家】还是不要优化。
--一个快速算法通常可以被更容易理解的同样快的算法替代。
--【代码规模保守定律】代码缩短后,注释要加长,保持总行数稳定。
--【关于集总参数电路】电子在1纳秒跑一英尺。
5. 关于文档
--【否定命题测试】如果一句话的否定明显是胡说,就别写在文档里。
--在解释一个指令、语言的特性、硬件时,先描述设计它们想解决的问题。
--【单页原则】一页纸讲不完的设计、过程、测试方案无法被理解。
--只有文档写好了,活才算干完了。
6. 关于软件管理
--系统结构反映了创建系统的组织的结构。
--要是不奏效,就别继续试。
--完成系统目的的代码只占不到10%。其他都是家务活,处理处理输入输出啊,数据校验啊,数据结构维护啊,等等。
--好的判断源于经验,经验源于坏的判断。
--只要能偷代码,就偷代码。
--与客户保持好关系能让我们更高产。
--把现有的工程翻译为目标语言或系统只耗费原创的10%的开发时间与人力。
--别用电脑干手工就能有效解决的问题。
--别手工计算电脑能有效解决的问题。
--比起写代码,我更想写能写代码的代码。
--有志者,事竟成(原文:如果你计划只朝一个方向扔东西,最终你不管怎样都会扔出去。)
--有志者,事半功倍。(原文:要是你计划只朝一个方向扔读写,你最终会扔出去两个。)
--【面向望远镜制造商的汤普森原则】比起直接造一个6英寸的镜子,先造一个4英寸的再造一个6英寸的更容易。
--【以彼之矛攻彼之盾】先完成困难的部分。要是困难的部分实现不了,为什么还要浪费时间弄简单的部分?而要是弄完了难的部分,你就万事大吉。---先完成简单的部分。你一眼觉得简单的部分,一般都很难。等这个简单部分完成了,你就可以全心全意做难的部分了。
7. 混杂规则
--【Sturgeon规则-适用于计算机科学与科幻作品】当然,90%的软件是垃圾。因为90%的存在都是垃圾。
--要是你对计算机说谎,计算机会识破。
--要是不追求系统可靠性,系统啥都能干。
--此之常量,彼之变量。
--此之数据,彼之程序。
--保持代码粗浅而愚蠢。
8. 原则
--摒弃小聪明原则。
9. 其他
--先做起来,再快起来。