1 在开发团队和开发社区里面推行通用标准是一件好事。它使人们更容易阅读彼此的代码,更迅速地理解代码中的习语,饼有效避免率性而为的随意编程。但是,盲目固守标准就会跟完全没有差不多。。
2 AntiObject
有时候,你应当质疑权威式你自己对么讴歌问题特定解决方案的偏好。
《PacMan》游戏 控制台在20世纪70年代诞生,它的计算能力比今天的一个廉价手机还弱。然而,它需要解决一个相当有难度的问题:如何让那些鬼魂穿过迷宫来追赶PacMan?那也就是说:穿过迷宫是一个移动目标的最短距离是多少?这是一个很大的问题,特别是如果你是用的内存很小或者计算能力很弱的。。。。。他们是用反目标的方法,将智能建于迷宫自身!
《PacMan》中的迷宫就像一个自动机。迷宫的每个房间都有与之相关的简单规则,从左上端开始知道右下端,这些房间每次都执行一遍。每个房间会记住一个Pacman气味值。当PacMan位于一个房间中,这个房间就具有最大的PacMan气味值。如果它离开这个房间,改房间的PacMan气味值就等于最大值减1。其为随着轮次的进行而递减,直至消失。这是,鬼魂们就变得愚钝了。。。当他们嗅到气味时,就朝着气味最重的房间走。。
这个问题“显而易见”的解决方案是给鬼魂们赋予智能。。然而更简单的方法是给迷宫赋予智能。这就是反目标方法:反转计算的前因后果。不要掉入“传统的建模方法总是正确的”陷阱中,也学一个特定的问题完全可以用另一种语言很容易就解决了。。。
呵呵,最后一篇了。。看完了《The Productive Programmer》收获还蛮大的。。开阔了一下视野。值!