1700490240
1700490241
虽然所有的隐喻最终都会瓦解,但是在这之前我们抱有的想法应该是,一个足够丰富的隐喻有助于指导系统的设计和解决开发过程中出现的问题(这种想法类似于我们在《程序员修炼之道》[HT00]中对系统不变量的讨论)。
1700490242
1700490243
隐喻参考系的特征能够印到软件系统,真实世界中隐含的、容易理解的属性逐渐转移到软件本身。
1700490244
1700490245
但是,提出一个好的隐喻——能够帮助解决问题而不是产生更多问题——可能是非常困难的。同测试先行、结对编程等广受欢迎的开发方式相比,系统隐喻作为一种实践并未得到广泛应用。
1700490246
1700490247
我曾经与极限编程之父Kent Beck笼统探讨过隐喻,他说:
1700490248
1700490249
“隐喻思维是编程的基础,因为它存在于所有的抽象思维中。如果我们没有意识到隐喻,就可能误入歧途。而混淆隐喻会削弱其自身的能力。为什么要在子类中覆盖方法?(Why do we override a method in a subclass?)清晰的隐喻使代码更易于学习、理解和扩展。”
1700490250
1700490251
清晰的隐喻是一种强大的工具,但是我们总是不能正确把握它。Kent接着说:“为什么我们会用错隐喻?为什么add()相对的函数并不总是delete()?为什么我们向容器中insert()东西而不是add()?程序员们对隐喻的使用并不认真——表单(table)根本不像表单,线程(thread)不像线程,存储单元(memory cell)既不像存储也不像单元。”
1700490252
1700490253
我们使用了如此多的隐喻,很多我们都没有察觉到(如窗口、鼠标,等等)。不假思索地提出第一个隐喻是非常容易的,但是这往往不是你能用的最好的隐喻。
1700490254
1700490255
提出衍生式隐喻是很困难的。
1700490256
1700490257
Generative metaphors are hard.
1700490258
1700490259
提出一个非常好的具有衍生式属性且适合情境的隐喻非常困难。没有“隐喻编译器”告诉你它正确与否,你不得不在实践中尝试。使用该隐喻指导你的设计,记住它是如何帮助你的,或者如何不起作用。你不会立刻知道答案,结果是不确定的。正如我们在4.3节所说的,你需要坦然面对不确定性。不要强迫自己立即做决定,做到心中有数就好。
1700490260
1700490261
在经历一些实践之后,你可能突然意识到你最初使用的这个隐喻是错误的,另一种想法实际上更适合(这当然很好,只需要做一些代码重构)。
1700490262
1700490263
如果不习惯于主动创建隐喻,你可能会发现实践一个系统级别的隐喻很困难〔24〕。但是有一种足够有趣的方法可以提高你创建隐喻、类比的能力。
1700490264
1700490265
4.3.8 讲个笑话吧
1700490266
1700490267
幽默既不是浪费时间,也不是无害的消遣,而是反映了思维、学习和创造所必需的重要能力。它与联系有关。
1700490268
1700490269
幽默产生于在不同的想法中制造新奇的联系。这听上去可能有些荒唐,不过幽默往往就建立在识别关系并扭曲关系的基础之上。例如,“我最好的朋友带着我老婆跑了,我真的很想念他。”你还以为主要关系是说话者和他的老婆,但事实上他与好朋友的关系是他想要强调的,这种扭曲的联系就显得很有趣。
1700490270
1700490271
Take my wife.
1700490272
1700490273
来自于汉尼·杨曼〔25〕的经典名句:“Take my wife. Please.”起初,你可能认为“take my wife”只是一个惯用语,意思是“例如,考虑一下我妻子的感受”。可后来你才意识到这是一个悲伤的请求〔26〕。语锋陡转正是幽默的来源。创造力来自于你意识到“take my wife”具有多重含义并利用这种潜在的可能性来制造误解。
1700490274
1700490275
众所周知,喜剧演员史蒂夫·赖特经常会打一些生动有趣的比方,例如,他说他的朋友,一位电台播音员,在开车经过一座大桥下时就会消失。其实,赖特是作了一个类比,既然电台信号在大桥下可能消失,那么电台播音员也可能会这样消失。他还说曾经偶然用车钥匙开家门,开着公寓在大街上兜风。
1700490276
1700490277
除了作类比,你还可以超常扩展一个已然存在的想法。举例来说,如果飞机的黑匣子能够幸免于难,那为什么不能让整架飞机安全无恙?
1700490278
1700490279
在任何情况下,幽默的能力都来自于发掘或扩展常规之外的关系,真正突破思维界限。急智——能够发现无关事物的联系或者扩展思维突破其界限——是一种值得在团队中实践、锻炼和提倡的技能。
1700490280
1700490281
诀窍15
1700490282
1700490283
培养幽默感以建立更强大的隐喻。
1700490284
1700490285
Have you seen my fishbowl?(你看到我的鱼缸了吗?)隐含的、习惯性的参考系会让你认为我在寻找鱼缸。但是,如果回答是:“是的,它刚打了个好球。”那么这么来看,我们就处在一种完全不同的卡通参考系中,bowl被变成了一个动词〔27〕。
1700490286
1700490287
通过练习制造这种广泛的联系,你会更精于此。事实上,你会逐渐改变大脑的结构来适应这种新活动。
1700490288
1700490289
4.3.9 实践单元
[
上一页 ]
[ :1.70049024e+09 ]
[
下一页 ]