【C++沉思录】 前言
实用和抽象:提供的接口应能很好的解决某个或某类特定的问题(且只为用到的东西付出代价),并对用户隐藏解决的细节,即使接口实现的细节差强人意
编程语言是一种解决问题的工具,没有好坏之分,只有谁更适合解决某个特定的问题,我们不应为了使用自己的工具重写所有的代码,而应该选择适合解决问题的工具。程序员应尽可能的使用机器代替自己能完成的机械工作
对于一个大的系统,应分割为各个小项目,并把小项目之间的关系理清楚,为每个项目之间设计一套尽可能通用的接口,使每个项目的成员不必关心接口之外的东西
工具应有一个共性——抽象的概念,一个好的工具应能把问题分解成独立的子问题,并能确保它们相互独立
如果要将一个问题分割为各个相互独立的子问题,或设计一套通用且稳定的接口,就需要对问题和系统本身有深刻的认识和了解,也就是说,要经过对架构的深思熟虑才开始动手解决问题,否则很可能问题解决了一半发现由于各种耦合而进退两难
C++最基本的设计原则就是使用类来表示概念

