横看成岭侧成峰,
远近高低各不同。
不识庐山真面目,
只缘生在此山中。
隐喻可以用苏轼的这首诗来看的话,是对同一个事物以不同角度建模得到的这么一个东西。
同样是钟摆,有的人以自由落体的观点看他,有的人会以单摆定律来看。
隐喻的使用方法:使用它来提高你对编程问题和编程过程的洞察力;用它来帮助你思考编程过程的活动,想出更好的做事情的方法。
软件开发的几种观点
Write Code: 做软件不能像写信一样,写错了随便一扔重新再来,这样的代价太高了,做软件就要一次成功。
Growing System: 一次写一点代码,可以将错误减少到最少,但是开始根本不能对整个过程进行控制,不知道结果会是什么,有可能种的是一棵树,长出来一颗玉米。
System Accretion: 先做一个尽可能简单的但是可以运行的版本,这样先建立起骨架,然后在增骨添肉。
Building System: 类比于建房子,根据你建的是狗窝还是摩天大楼来构建不同系统,根据系统不同做多层次的规划。一旦出错,代价可能如同移动一个摩天大楼的支柱一样,所以其中的规划不容有错。
不同隐喻之间并不排除的,可以相互组合。结合不同角度来看一座山,会得到这座山的更多资源。