知乎上有個問題:編程到底難在哪裏?知乎網友 DJ Hitori 的回答獲贊無數。程序員
這篇回答並非講述在生活中程序員如何買蘋果,而是以買蘋果爲例說明程序員如何解決問題。程序員須要對問題進行透徹的分析,理清其涉及的全部細節,預測可能發生的全部意外與非意外的狀況,列出解決方案的全部步驟,以及對解決方案進行儘可能全面的測試。而這些正是編程難的地方。編程
任何一點遺漏都會成爲bug,輕則致使捱罵,重則致使經濟損失甚至危害安全。安全
回答原文學習
普通人:測試
我今天要買一斤蘋果。spa
程序員:設計
我今天要買一斤蘋果。視頻
由於我只喜歡紅富士蘋果,因此我只買紅富士蘋果。blog
我能接受的最高價格是 10 元 / 斤。教程
正常狀況下一斤蘋果用一個袋子能裝下,可是爲防萬一,我會帶兩個袋子。
我知道附近的 3 家水果店,因此我會依次訪問這 3 家水果店。
根據上述條件,我設計出如下的買蘋果的流程:
這個流程怎麼樣?我來設計一些測試樣例,測試一下這個流程。
測試發現一個問題:若是水果店 0 和水果店 1 都有紅富士蘋果而且價格都低於 10 元 / 斤,並且水果店 1 的價格比水果店 0 更低,那麼我但願買水果店 1 的蘋果,但我設計的流程會讓我買水果店 0 的蘋果。
爲了解決這個問題,我應該先詢問全部水果店的價格,而後去價格最低的那一家買蘋果。
通過修改,我從新設計出如下的買蘋果的流程:
如今這個流程是否是完美了呢?不是,我還能發現不少問題。
若是 3 家水果店都有紅富士蘋果但都不到一斤,可是三家店加起來能達到一斤,那麼我不該該結束流程回家,而是應該把三家店的紅富士蘋果都買下來。
若是我向水果店詢問價格的時候這家店還有紅富士蘋果,但我詢問完全部水果店的價格後這家店的紅富士蘋果賣完了,那麼個人流程會讓我試圖處理不存在的紅富士蘋果。
我走路的過程當中可能會遇到突發事件,好比發現了新的水果店,好比袋子破掉了蘋果掉一地,對於這些狀況個人流程都沒法進行處理。
啊問題太多了我懶得再改流程了。我仍是去 X 寶買吧。那麼接下來我要設計一個在 X 寶買紅富士蘋果的流程……
原文:ht刪t刪ps刪:/刪/ww刪w.z刪hih刪u.c刪om/a刪ns刪we刪r/1刪4133刪46刪7刪8;做者:DJ Hitori
另外若是你想更好的提高你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這裏或許能夠幫到你~
歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!
免費學習資料: