一旦你重構掉之后,有一天你想看看原始實現是什么樣子 。或者干脆你就想切換回原始實現 。這個時候這一步切換可以最大限度的保留當時的代碼全景,讓你很容易的看清當時的實現,也讓你的回滾變得容易,畢竟誰也不敢保證自己能一次性做對,改著改著發現低估了這個復雜性,還不如以前的設計方便,也是常有的事兒 。
迭代3你是一名體育老師,在某次距離下課還有五分鐘時,你決定搞一個游戲 。此時有200名學生在上課 。游戲的規則是:
讓所有學生拍成一隊,然后按順序報數 。學生報數時,如果所報數字是3的倍數,那么不能說該數字,而要說Fizz;如果所報數字是5的倍數,那么要說Buzz;如果所報數字是第7的倍數,那么要說Whizz 。學生報數時,如果所報數字同時是兩個特殊數的倍數情況下,也要特殊處理,比如3和5的倍數,那么不能說該數字,而是牛津要說FizzBuzz,以此類推 。如果同時是三個特殊數的倍數,那么要說FizzBuzzWhizz 。學生報數時,如果所報數字包含了3,那么也不能說該數字,而是要說相應的單詞,比如要報13的同學應該說Fizz 。如果數字中包含了3,那么忽略規則2和規則3,比如要報35的同學只報Fizz,不報BuzzWhizz 。到這個版本,就是我們拿去做面試題的版本了,揭曉前面吃驚的地方,明明沒有說包含5和包含7,結果有近1/3的人自己就寫了包含5直接返回Buzz,包含7直接返回Whizz,fizzbuzz游戲 。還有一部分人走向腦補的反面,我們權且叫它腦刪,比如這個題就是明明寫了包含3,他沒做,這種情況也都在那1/3里 。
同學們,我需要再強調一遍,腦補是不對的 。我去很多學校進行過人才的篩選,我發現一個基本的標準就可以篩掉大多數的人,那就是這個人會不會腦補或者腦刪 。這個比例有多高,恐怕高出你的想象 。有一個研究貧困家庭到底會在學習上遇到什么問題的書里講,貧困家庭的孩子,最大的能力缺失是閱讀能力不行,由于在小時候缺乏了閱讀能力的鍛煉,絕大多數窮人家的孩子閱讀能力都不好,他們不習慣看長文,閱讀也經常會理解錯誤,于是導致了他們的收入的天花板 。
從這幾個獨立的案例里可以看到一個道理,那就是機器的輸入輸出很重要,人的輸入輸出同樣重要,有的時候很多人并不是比別人笨,只是因為輸入出了問題,智商的部分根本沒有機會參與競爭 。對于這些沒過的同學,他們的問題就出在了題沒有讀清楚 。也就是我們前面講的業務域沒搞清楚,所以最后結果不好 。
我們當然也可以說,是你需求沒有講清楚,里面的重點沒有標記fizzbuzz清楚,沒有用一種更容易理解的方式來呈現 。但現實中真的存在完全清楚的需求描述嗎?由于人類的語言存在強烈的上下文相關性,同一個詞語換了上下文都會有不同的含義,換句話說,兩個上下文不同的人聽到同一個詞的理解也是不一樣的 。我們的工作就處在這樣的一種場景下,澄清需求本就是程序員的工作之一,因此溝通表達能力也是程序員需要去關注的能力之一 。不然就會發生業務域的問題沒搞清楚然后試圖通過方案域和實現域辦法來解決不屬于這兩個問題域的問題,這是很多難題得不到解決的關鍵所在,也是很多亂相的根因,具體比例咱不好說,讀者可以自行對號入座 。
測試景深到了這個版本的需求里,我們需要處理包含3,這里面有個測試就不太好了,那是什么呢?輸入3得到Fizz這個,如下圖所示:

文章插圖
這個測試我們測試了什么呢?是測試的被357整除還是測試的包含3?很明顯,我們測試的是包含3 。
相關經驗推薦
- 家譜英語
- 第三天英文怎么寫 第四天英文怎么寫
- oliver怎么讀 oliver怎么讀英語人名
- 蘋果的英語怎么讀 螞蟻的英語怎么讀
- 即使是這樣英語怎么說 即使這是色情
- 新年賀詞中英文對照50字 英語新年賀詞50字
- 你喜歡吃水果嗎的英語怎么說 問別人喜歡吃什么水果的英浯怎么說
- 制造商一定要在外包裝上寫嗎 制造商一定要在外包裝上寫嗎英語
- 云南2023年普通高等學校招生第二次英語科目聽力考試和口語測試公告
- 云南高考第二次英語聽力考試需要戴口罩嗎
