编程珠玑
- 看起来很困难的问题也可以有一个简单的、意想不到的答案
- 优秀的程序员都有点懒:他们坐下来等待灵机一动的出现而不是急于使用最开始的想法编程
- 恰当的数据视图实际上决定了程序的结构(一个有500个元素的数组代替500独立的变量)。程序可以通过重新组织内部数据而变得更小(并且更好)。
- 能用小程序实现的,就不要编写大程序。
- 程序员在节省空间方面无计可施时,将自己从代码中解脱出来,退回起点并集中心力研究数据,常常能有奇效。(数据的)表示形式是程序设计的根本。
- 动手编写代码之前,彻底理解输入、输出和中间数据结构,并围绕这些结构构建程序。
- 代码的开发是自上而下进行的,(从一般思想开始,将其完善为独立的代码行),该正确性分析是自下而上的:从每个独立的代码行开始,检查他们是如何协同运作并解决问题的
- 问题很重要,需要认真编写代码;程序的开发需要遵循验证思想。
- 系统结构。将大型系统分解成模块,也是是决定其性能的最重要的单个因素,在构建出整个系统的框架之后,设计中需要完成简单的“粗略估算”,以确保程序的性能是在正确的范围之内,所以,性能分析在系统设计阶段至关重要。
- 简单设计的重要性怎么强调都不过分。
- 任何事都应尽量简单,但不宜过于简单。
- 关键在于简单,简单性可以衍生出功能性、健壮性以及速度和空间。
- 有些程序员过于关注程序的效率:由于太在乎细小的“优化”,他们编写的程序过于精妙,难以维护。而另外一些程序员很少关注程序的效率,他们编写的程序有着清晰漂亮的结构,但效率极低以至于毫无用处。效率只是软件中众多问题之一,但有时候也很重要。
- “代码调优”首先确定程序中开销较大的部分,然后进行少量的修改,以提高其运行速度。“代码调优”并不总是恰当的方法,也不太有趣,但是有时候它可以使程序的性能大为改观。
- 解决现有的问题是程序员任务的一部分,另一个也许更重要的部分是解决未来问题的准备。
- 提炼出抽象问题,简洁、明确的问题陈述不仅可以帮助我们解决当前遇到的问题,还有助于我们把解决方案应用到其他问题上。
- 考虑尽可能多的解法。很多程序员很快就发现了问题的“解决方案”,他们只愿意花1分钟的时间思考,然后花一天的时间写代码,而不是先花1小时来思考,再用1小时来写代码
- 改进的余地总是存在的,经过充分的研究和思考,任何解决方案都可能被改进。任何情况下,对于解决方案的理解一定能被改进
- 程序设计不仅仅意味着根据正式的需求文档进行系统化的程序开发
- 观察数据
- 使用粗略估算
- 利用对称性
- 利用组件做设计
- 建立原型
- 必要性进行权衡
- 保持简单
- 追求优美
编程珠玑看多几遍都不为过