隐喻是什么?我们为什么需要它

隐喻是什么?

隐喻其实就是比喻,把一件比较陌生的事情,用一个形象的思维来描述。

我给你举个例子:

我想做一种操作,先定义一个整数数组A,再定义整数B = 0。

定义如下的操作:

 1  向数组里边保存数值的操作:

         得到一个整数C0,就在A[0]处保存C0,B加1。再得到一个C1,在A[1]处保存C1,B加1.

  2 从数组取值的操作:

        必须先从A[0]处取值,然后删除A[0]的值,A[0]后面的数值依次向前面窜一位,B减1.

上面的操作应该是看明白了吧,我的描述应该也没什么问题。按照我的描述,你也可以写出相应的代码来。但是

上面的描述是不是显得很啰嗦,并且不是一目了然。说白了,上面的操作无非是一个队列,先进来的先出去。这个队列,就是我们

说的隐喻,用现实我们的生活经验,来模拟虚拟的代码世界的规则。看起来确实是一目了然呀。

 

我们为什么要用隐喻呢?

因为我们人类,已经习惯了形象化思维,我们有推理的能力,从相似的事物规则推理我们不很熟悉的规则的能力。并且在很多时候

是非常有效的。这就是我们说话的时候,总喜欢打比方的原因。怎么讲你也听不明白,那我就给你打个比方,恩,看来你听明白了。

代码的世界,是一个很虚拟的世界。在这里你定义的一些规则,如果能和现实的规则有什么联系的话,理解起来就简单多了。并且,

还可以利用现实的经验来推断你的代码。

据个例子:

定义一个布尔变量 LampSwitch,代表这是一个灯的开关。现在有两个函数亮灯()和灭灯()。

  1 LampSwitch =On的时候,应该是调用什么函数呢?

  2 LampSwitch =Off的时候,应该调用哪一个函数呢?

八成没有人可以回答错了。

 

但是如果我定义一个 整数 Abc

  1  Abc =1的时候,应该是调用什么函数呢?

  2  Abc =2的时候,应该调用哪一个函数呢?

你还真说不上来,这个Abc是什么呀?嗯,,,先不管是什么,我就规定Abc等于1的时候,调用亮灯(),等于2的时候调用灭灯()。

这个程序也可以运行,估计你做的程序也不会有什么太大的问题。不过我敢保证3个月以后,单独拿出来Abc来,你肯定忘记了应该怎么

设置了。它太不形象了。现在还好,调用的2个函数还比较形象,如果是函数是A1()和Fgh()呢。或者别人看你的程序呢?

 

   别人-----恩,这家伙写的什么呀,什么意思呀?怎么Abc等于1的时候就调用A1()。

   作者------你就照着上面的规则用吧,不是已经写得很清楚了吗?

   别人----- 但是,想不明白你为什么这样写。。。。

   作者------代码就是这样,慢慢就习惯了。

 

我敢肯定,你现在写的代码,肯定那一天就是bug的隐患。

设想你来到一个大楼,想用一下电梯,上面的按钮表示着[1]和[2],你知道是干什么的吗?

你要是不知道的话,你的代码里边还是少了一些不很形象的变量和函数要好一些,你说呢?

总结:

  代码很难懂,最好你用一个形象的比喻把它表现出来。就像我们的生活中间一样。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2009-02-15 14:41  kimhao  阅读(1842)  评论(0编辑  收藏  举报