老婆给当程序员的老公打电话:下班顺路买一斤包子带回来,如果看到卖西瓜的,买一个。当晚,程序员老公手捧一个包子进了家门…老婆怒道:你怎么就买了一个包子?!老公答曰:因为看到了卖西瓜的。
这是个老笑话了,用水木群众喜闻乐见的方式来评论就是tooooooooooooooooooooold:)。最初看到这个笑话的反应当然是哈哈笑,笑完了仔细想想却发现不是那么回事儿。按笑话里的意思,无论如何不可能得到这个结果。
把程序员老婆的话当作一段需求分析一下吧。买一斤包子是一个确定无疑的需求项,无论后面是什么情况什么条件,前面这一斤包子是肯定要买的。看到卖西瓜的是一个条件判断,后面“买一个”是一个模糊不清的需求项,买一个什么呢?需求里没说啊。客户把这个当作开发人员默认了解的内容了。可是作为一个成熟合格的程序员,该老婆的丈夫应该马上跟进确认需求“买一个什么?”,要不然程序可怎么写呢?所以笑话里该程序员是不合格的,起码是不积极不负责的。在没有明确需求的情况下,他只能按照自己的理解来完成工作了。那比较可能的结果就有如下几种:
1 看到卖西瓜的,买一个西瓜
2 看到卖西瓜的,买一个包子
3 看到卖西瓜的,买一个卖西瓜的
4 看到卖西瓜的,买一个老婆一直想买的东西
5 看到卖西瓜的,随便买一个东西
不管分支处理到如上哪种可能,结果都是一斤包子+一个东西(或者人,呵呵),不可能出现只买了一个包子的情况。买1斤包子和买一个(东西)不是互斥关系,不是if…else。谢谢。
好吧,文科生们都颤抖吧,程序员考虑问题的方式是和你们不同,不过怎么也不是你所认为的呆瓜,^_^。
几种选择中可能性最大的就是1,所以可以把老婆的需求转换成如下程序:
buy_baozi(0.5 kg);
if (see_wm_seller() == TRUE) buy_watermelon(1);
结果是1斤包子+1个西瓜,正好是老婆的需求。
关于这个笑话的结论是需求分析很重要,一定要认真踏实,不可马虎,要不然就会带来不可预料的结果。
|
|