在知乎上有这样一个问题“qq二维码红包怎么制作到底难在哪里?”,这条问题底下有一条破46k的回答。

普通人

我今天要买一斤苹果。

?

?

程序员

我今天要买一斤苹果。

因为我只喜欢红富士苹果,所以我只买红富士苹果。

我能接受的最高价格是10元/斤。

正常情况下一斤苹果用一个袋子能装下,但是为防万一,我会带两个袋子。

我知道附近的3家水果店,所以我会依次访问这3家水果店。

?

根据上述条件,我设计出以下的买苹果的流程:

买苹果流程开始 ? ?

? 对水果店0、水果店1、水果店2依次执行: ? ?

? 拜访一家水果店流程开始 ? ? ? ?

? ? 走到此水果店 ? ? ? ?

? ? 如果此水果店没有开门,则结束当前的“拜访一家水果店流程” ? ? ? ?

? ? 如果此水果店没有苹果,则结束当前的“拜访一家水果店流程” ? ? ? ?

? ? 如果此水果店的苹果当中没有红富士苹果,则结束当前的“拜访一家水果店流程” ? ? ? ?

? ? 如果此水果店的红富士苹果剩余不到一斤,则结束当前的“拜访一家水果店流程” ? ? ? ?

? ? 如果此水果店的红富士苹果的价格高于10元/斤,则执行3次: ? ? ? ?

? ? 讲价流程开始 ? ? ? ? ??

? ? ? 询问店主是否愿意将价格降到10元/斤或更低? ? ? ? ? ? ? ? ? 如果店主愿意,则跳过剩余的“讲价流程” ? ? ? ?

? ? 讲价流程结束 ? ? ? ?

? ? 如果此水果店的红富士苹果的价格仍然高于10元/斤,则结束当前的“拜访一家水果店流程” ? ? ? ?

? ? 打开一个袋子,将其作为当前的袋子 ? ? ? ?

? ? 重复执行以下流程,直到总重量大于一斤: ? ? ? ?

? ? 装袋一个苹果流程开始 ? ? ? ? ? ?

? ? ? 从所有的不在袋子中的红富士苹果中选出最好的一个??

? ? ? 如果此苹果能装入当前的袋子,则将此苹果装入当前的袋子,否则执行: ? ? ? ? ? ?

? ? ? 换袋子流程开始 ? ? ? ? ? ? ??

? ? ? ? 如果我有剩余的袋子,则从中任意选出一个并作为当前的袋子,否则执行: ? ? ? ? ? ? ? ?

? ? ? ? 向店主要袋子流程开始 ? ? ? ? ? ? ? ? ? ?

? ? ? ? 向店主索要一个袋子 ? ? ? ? ? ? ? ? ? ?

? ? ? ? 如果店主拒绝给我袋子,则将我的所有袋子里的所有苹果取出,然后结束当前的“拜访一家水果店流程”? ? ? ? ?

? ? ? ? 将店主给我的袋子作为当前的袋子 ? ? ? ? ? ? ? ?

? ? ? 向店主要袋子流程结束 ? ? ? ? ? ?

? ? 换袋子流程结束 ? ? ? ? ? ?

? ? 测量我的所有袋子里的所有苹果的总重量 ? ? ? ?

? ? 装袋一个苹果流程结束 ? ? ? ?

? ? 根据我的所有袋子里的所有苹果的总重量和店主给出的价格,计算我应付的价格 ? ? ? ?

? ? 向店主询问我应付的价格 ? ? ??

? ? 如果我不接受店主索要的价格,则执行3次: ? ? ? ?

? ? 校对流程开始? ? ? ? ? ??

? ? ? 向店主解释我计算出的价格,并询问其是否同意? ? ? ? ? 如果店主同意,则跳过剩余的“校对流程” ? ? ? ?

? ? 校对流程结束 ? ? ? ?

? ? 如果我仍然不接受店主索要的价格,则将我的所有袋子里的所有苹果取出,然后结束当前的“拜访一家水果店流程” ? ? ? ?

? ? 如果我没带钱,则将我的所有袋子里的所有苹果取出,然后结束当前的“拜访一家水果店流程” ? ? ??

? ? 付钱拿走苹果 ? ? ? ?

? ? 跳过剩余的“拜访一家水果店流程” ??

? 拜访一家水果店流程结束?

买苹果流程结束

?

?

现在这个流程是不是完美了呢?不是,我还能发现很多问题。


如果3家水果店都有红富士苹果但都不到一斤,但是三家店加起来能达到一斤,那么我不应该结束流程回家,而是应该把三家店的红富士苹果都买下来。


如果我向水果店询问价格的时候这家店还有红富士苹果,但我询问完所有水果店的价格后这家店的红富士苹果卖完了,那么我的流程会让我试图处理不存在的红富士苹果。


我走路的过程中可能会遇到突发事件,比如发现了新的水果店,比如袋子破掉了苹果掉一地,对于这些情况我的流程都无法进行处理。

?

啊问题太多了我懒得再改流程了。我还是去X宝买吧。


那么接下来我要设计一个在X宝买红富士苹果的流程……

作者:DJ Hitori
https://www.zhihu.com/question/22508677/answer/141334678

那qq二维码红包怎么制作到底难在哪呢?我们来仔细想想。

?

1 需要周密的考虑会发生的所有情况。

就拿买红富士苹果举例。当我决定买苹果后,需要走到一家水果店,这时候就会发生这样几种情况:

1)水果店没有开门

2)水果店开门了但是没有苹果

3)水果店有苹果但是没有红富士苹果

?

假设我正好遇到了开门的且正好有红富士苹果的水果店,那么我又面临着选苹果和还价等等过程,当然这个过程中还会有很多种情况。

?

可能你会说,程序员买个苹果怎么都那么矫情?这篇回答并不是在回答“程序员在生活中怎么买苹果”,而是“qq二维码红包怎么制作到底难在哪里”。

?

就从我们刚才说的方面来看,“多样的情况”让我们在qq二维码红包怎么制作时需要“周密的思考”。到底有多少种可能,并且如何解决每一种可能成为了关键

?

2 需要为每一种情况设计的解决方法进行测试。

上面我们提到,当我决定买苹果走到一家水果店,这时候就会发生这样几种情况:

1)水果店没有开门

2)水果店开门了但是没有苹果

3)水果店有苹果但是没有红富士苹果

?

那么针对不同的情况需要有相应的解决方案,比如,

1)水果店没开门——去下一家

2)水果店开门了但是没有苹果——去下一家

3)水果店有苹果但是没有红富士苹果——去下一家

?

但是qq二维码红包怎么制作到这就结束了吗?怎么可能!苹果还没买到呢!

按照解决方法下面我要去下一家水果店了,接着……嗯,还会有很多情况……

?

所以光想出解决方法还不够,要测试每一种方法是不是真的解决了问题。

?

你说qq二维码红包怎么制作为什么能培养逻辑思维?

?