本来我是不打算看这个《代码大全》的,同理,也不想看《effective java》的。总觉得我的目标是做个架构师,做设计。这2本书显然是以coder为对象的。
不知道为什么,我还是决定拿起来随便看看。才看了个头,就觉得很值了。
metaphor,直译就是隐喻。说实话,咱们中文里似乎以前不怎么用这个词,还是译成比喻比较通俗。作者真的是看过很多书,他例举了很多其他大师对软件开发的比喻:
引用
Fred Brooks says that writing software is like farming, hunting
werewolves, or drowning with dinosaurs in a tar pit (1995). David Gries says it’s a science (1981). Donald Knuth says it’s an art (1998). Watts Humphrey says it’s a process (1989). P.J. Plauger and Kent Beck say it’s like driving a car (Plauger 1993, Beck 2000). Alistair Cockburn says it’s a game (2001). Eric Raymond says it’s like a bazaar (2000). Paul Heckel says it’s like filming Snow White and the Seven Dwarfs (1994).
种田,打猎,艺术,过程,开车,游戏,买卖,白雪公主和7个小矮人,以上海阔天空的比喻都对我不起任何共鸣和产生实质帮助。
接着作者说出了我认为对我最有价值的比喻:建筑。
太对了,开发软件跟建造房子太相像了!!!
理由如下:
1) 所谓的design pattern是源自一位建筑师的思想;
2) 软件开发里用到的词汇:build,construction,architecture,...,源自建筑领域;
3) 造狗屋和造摩天大楼的区别,非常类似开发小软件和大规模软件的区别;
...
一个好的比喻,能让初学者事半功倍,迅速理解软件开发的本质,能在发生问题时循着正确的方向迅速找到答案。我自己之前对软件开发的比喻是雕塑,绘画,类似Donald Knuth的art.但现在发现,建筑是目前为止最好的metaphor.