原文地址:Practical Guide to Solving Hard Problems
我有時發現自己需要寫一些程式碼,但我不知道如何寫。你有過這樣的經歷嗎?以下是我在遇到困難時採取的步驟。這裡沒有什麼大發現,只有來之不易的建議。
- 在輸入任何程式碼之前,認真思考這個問題幾個星期
- 確定 function 或者 class 的 input 和 output 定義
- 將功能分解成多個步驟,並有明確的目標。你可能不知道如何實現這些目標,但可以先規劃抽象出實現方法
- 寫出詳細的偽碼步驟,不知道具體實現也沒有關係
- 嘗試實現一些簡單的步驟,並在腦中演算實現,建立自己的信心
- 嘗試實現困難的步驟,將困難的部分按照前面的步驟再進行細分實現,你會對自己的工作進度感到驚訝
- 在你實現 80% 左右的實現之後,嘗試找現成的實現方案幫助實現
(這個步驟個人會放在第0步就實踐)
- 對於特別困難沒有思路的問題,在網路上搜尋相關的問題,對比學習別人的實現方案,幫助完善自己的實現
- 在尋找幫助的前提下還是沒有任何人有相關實踐,嘗試休息放空自己,說不好什麼時候就來靈感了,比如洗澡的時候
我認為這些是所有程式設計師都會採取的步驟,但有時把它說出來也是不錯的。
我特別重視功能分解。函數是一個強大的抽象,不僅僅是為了少寫程式碼,也是為了思考問題。
請不要誤解我對 "函數" 一詞的使用,認為它只是指函數式程式設計師喜歡的那些東西。我指的是任何資料轉換器:從低階的 lambdas 到帶有狀態的 IO 處理的單體物件。
謝謝你的閱讀!現在去解決那些困難的問題吧!