1700490550
然而,代码中的模式匹配也有不好的一面。看看下面这个用可敬的C语言所编写的经典代码片段:
1700490551
1700490552
if (receivedHeartbeat())
1700490553
1700490554
resetWatchdog();
1700490555
1700490556
else
1700490557
1700490558
notifyPresident();
1700490559
1700490560
launchNukes();
1700490561
1700490562
在这个令人遗憾的例子中,不论receivedHeartbeat()的值是多少,launchNukes()总是会被执行。缩进的代码看起来很舒服,可读性强,但是编译器并不这样认为:else只关联了第一个语句,缩进反而起了误导的作用。排版对感知具有很强的影响——无论是好还是坏。
1700490563
1700490564
适应不同技能层次。
1700490565
1700490566
Accommodate different skill levels.
1700490567
1700490568
请努力使用一致的排版提示来辅助可视化知觉。编译器也许不在意,但是我们的确在意。对下述可能会出现的情况也要理解:如果你处于较高的技术水平上,同时又遭遇到团队里其他人的阻力,要明白他们看待问题的方式肯定和你不同。他们不会自觉地认识到这种价值,因此你必须向他们解释。
1700490569
1700490570
如果你没有看到这些模式的价值,但是团队里的专家们意识到了,那么请遵循他们。记住,这不是一种浪费时间的愚蠢修饰,而是一种重要的交流工具。
1700490571
1700490572
4.5.2 换换脑子
1700490573
1700490574
很多时候你难以看清摆在面前的事情,因为你已经习惯于通过某种特定的方式来看待模式。我们往往会遵循老套子,即陷入特定的思维模式和习惯的思维方式。努力从完全不同的角度看待问题,这是获取洞察力的诀窍。
1700490575
1700490576
车辙和坟墓之间的唯一区别在于尺寸。
1700490577
1700490578
The oniy difference between a rut and a grave is the dimensions.
1700490579
1700490580
举例来说,这里有一道题可能会难倒你(如果你已满六岁):施洗约翰(John the Baptist)和维尼熊(Winnie the Pooh)之间有什么共同点?答案〔37〕不是你通常所想的。好了,这是一个傻傻的玩笑,但是我想说的是,这个完全出人意料的字面答案来源于一种你可能不习惯的情境。
1700490581
1700490582
拥有创造力和问题解决能力的关键在于寻找思考问题的不同方式。不同的关联会强制R型发起不同的搜索,这样新的素材可能立即就会出现。
1700490583
1700490584
把问题倒过来。
1700490585
1700490586
Turn the problem around.
1700490587
1700490588
Dave Thomas在面对难题时,经常会说“倒过来看”。这是一种智力冲撞:使你脱离思维定势,从不同角度思考问题。
1700490589
1700490590
举例来说,录音师都会使用这样一种流行的技术来混合唱片。为了尽可能让声音好听,他们首先录一遍,把每一种乐器的声音弄得尽可能差。萨克斯管的音色沙哑,调高吉他的品丝噪音,让电贝司嗡嗡作响,等等,无一例外。现在翻转整个设置:把一切导致声音差的事物都调整或者关闭以获取清晰、动人的旋律。
1700490591
1700490592
这种视角的简单转变,也就是从相反角度思考问题,本身是一种非常强大的技术。你可以在调试的时候使用这种技术:不要努力预防难以发现的bug,努力找到三四种会主动引起bug的方式。这样,你可以发现到底会发生什么。在用户界面设计时或许也可以尝试同样的方法:不要努力去想完美的格式或者流程,先做一个最差的设计方案。这将帮助你意识到什么是真正重要的。
1700490593
1700490594
诀窍17
1700490595
1700490596
改变解决问题的角度。
1700490597
1700490598
在A Whack on the Side of the Head [vO98]一书中,Roger von Oech列举了许多不同的“换脑法”,例如逆向思维、夸大想法、组合完全异类的想法等。
1700490599
[
上一页 ]
[ :1.70049055e+09 ]
[
下一页 ]