1. 知道何时放弃很难,但这是必须面对的问题。
2. 改善系统的方法之一就是提升其模块性--增加定义完善、命名准确的子程序,让他们各自集中力量做好一件事情。
3. 每个类负责一组具有内在的相互关联的任务。
4. 封装。
5. 把public数据成员藏在访问器子程序背后。
6. is-a 转变为has-a。
7. 不要为拙劣的代码编写文档,不要为他的存在找借口。
8. 不要“超前设计”
9. 用多态来替代重复的条件判断(尤其是case语句)。
10. 喜欢并认同<<Code Complete>>中对软件构建与建筑建造的类比。软件架构师就如同建筑架构师。
11. 如果地基没打好,或者计划不充分,那么你在构建期间能做的无非是尽量让损害最小罢了。
12. 程序员是软件食物链的最后一环。架构师吃掉需求,设计师吃掉架构,而程序员则消化设计。
13. 使用迭代式开发法,成本将会在整个项目过程当中分次支付,而不会聚集到项目末尾一次性支付。