知乎神答覆:編程到底難在哪裏?

知乎上有個問題:編程到底難在哪裏?知乎網友 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++編程!彎道超車,快人一步!筆者這裏或許能夠幫到你~

分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!

免費學習書籍:


 

免費學習資料:

相關文章
相關標籤/搜索