开发过程中整理的工具,大部分可通用。
- 你无法断定程序会在什么地方耗费运行时间。(瓶颈经常出理在想不到的地方,所以别急于胡乱找个地方改代码,除非你已经证实那儿就是瓶颈所在。)
- 估量。(在你没对代码进行估量,待别是没找到最耗时的那部分之前,别去优化速度。)
- 花哨的算法在 n 很小时通常很慢,而 n 通常很小。
- 数据压倒一切。(如果已经选择了正确的数据结构并且把一切都组织的井井有条,正确的算法也就不言自明。编程的核心是数据结构,而不是算法。)
- 使用简洁的接口拼合简单的部件。
- 清晰胜于机巧。
- 设计时考虑拼接组合。
- 策略同机制分离,接口同引擎分离。
- 设计要简洁,复杂度能低则低。
- 除非确无它法,不要编写庞大的程序。
- 设计要可见,以便审查和调试。
- 健壮源于透明与简洁。
- 反知识叠入数据以求逻辑质朴而健壮。
- 接口设计避免标新立异。
- 如果一个程序没什么好说的,就沉默;
- 出现异常时,马上退出并给出足够错误信息。
- 宁花机器一分,不花程序员一秒。
- 避免的手工 hack,尽量编写程序去生成程序。
- 雕琢前先要有原型,跑之前先学会走。
- 决不相信所谓“不二法门”的断言。
- 设计着眼未来,未来总比预想来得快。
面向接口编程,通过数据驱动
一、测试代码,必须有意义。(各种异常,必须有相应的 log 信息)
二、代码提交,必须检查代码更新。
三、模块化开发,接口必须加注释,说明输入、 输出,及可能出现的异常和已处理的异常(不许缺省);通常情况,应预留特殊参数(即多余的参数,默认常值为 nil/NULL)
四、功能模块,必须与界面分离,只提供相应的接口(异步、同步)。
五、项目主业务流程,由专人负责编写及测试,模块以接口形式提供功能(参考三)
懒、洁癖