当我们想做一件事情的时候,比如我们要从住处出发到某个餐馆去跟女友约会。
如果是个大老粗,不管三七二十一,出发吧。结果,到了之后,发现钱没带够,花忘了买,连最重要的礼物也忘家里了。没办法,还得折回去拿。结果是,自己累不说,还浪费了时间,浪费了金钱,而且女朋友也不开心。
如果是个思维缜密的人,他会先想:我去餐馆的目的是什么,哦,最重要的事情,是带给女朋友从国外买回来的礼物,所以千万别落了。当然,吃饭不能让女朋友付钱,所以得带上足够的钱。还有,如果送上一朵玫瑰,在烛光下,会更浪漫一点。用这两分钟时间先进行思考的结果是,什么都没落下,女朋友也很开心,最后,终于赢得美人归。
其实是编程中某些新鲜的做法,引起我上面的思考。在实现一个方法的时候,我们有时候可以先写结果(即我们想要的),然后一步步推导回去,在这个过程中,我们会很顺其自然的知道:我们要得到这个结果,需要什么?然后去把我们需要的东西拿出来即可。非常简单,不会做任何多余的事情。
而如果按照正常的写法,我们难免会像上面那个大老粗一样,要丢三拉四。
其实,原因就在于,前一种做法,你把你想要的和过程中所需要的都写下来了。而后一种做法,你把你想要的和所需要的,都还保留在大脑里。既然保留在大脑里,就难免出错,难免丢三落四。而且,保留在大脑里,就会增加大脑的负荷。既然如此,为何不把它从大脑中移出,即保证正确,又可以利用你的大脑去思考真正要思考的。
这个方法,其实和要先写伪代码的注释,是一个目的。