云享讀書會----《程序員修煉之道》筆記2
軟件編程基礎工具
16 純文本的威力
將知識用純文本保存純文本不會過時,它能夠讓你的工作事半功倍,并能簡化調試和測試工作
17shell游戲
發揮shell命令的威力
當圖形界面無法勝任時,使用shell
18加強編輯能力
游刃有余的使用編輯器
既然編輯器是至關重要的工具,不妨了解一下如何用它更快更準確的實現需求
19版本控制
永遠使用版本控制
版本控制為你的工作創造了一個時間機器,可以用它重返過去
20 調試
去解決問題而不是責備
Bug到底來自你的失誤還是別人的失誤真的不重要他終究是你的問題需要你來修復
不要恐懼
不管是對銀河系搭車客,還是對開發者來說都應這樣
修代碼前先讓代碼在測試中失敗
在你修bug前,先創建一個聚焦于該bug的測試
讀一下那些該死的出錯信息
大多數異常都能告訴失敗之物與失敗之處。如果足夠幸運你甚至能夠得到具體的參數值
Select 沒出問題
在操作系統或編譯器中發現bug非常罕見,甚至在第三方產品或庫中也是如此。Bug大多出現在應用程序中
不要假設要證明
在真實環境中證實你的假設—要依賴真實的數據集
務實的偏執
21 文本處理
學習一門文本處理語言
既然每天都要花大量的時間與文本打交道,何不讓計算機幫你分擔一二?
22工程日記
你無法寫出完美的軟件
軟件不可能是完美的。對于在所難免的錯誤,要保護代碼和用戶免受其影響
23契約式設計
通過契約進行設計
代碼是否不多不少剛好完成它宣稱要做的事情,可以使用契約加以校驗和文檔化
24死掉的程序不會說謊
盡早崩潰
徹底死掉的程序通常比有缺陷的程序造成的損害要小
25斷言是編程
使用斷言去預防不可能的事情
如果一件事情不可能發生,那么就用斷言來確保其的確不會發生,斷言在校驗你的假設,要使用斷言在不確定的世界中將你的代碼保護起來
26如何保持資源的平衡
有始有終
只要有可能,對資源進行分配的函數或對象就有責任去釋放該資源提示
在局部行動
將易變的變量維持在一個范圍內,打開資源的過程要短暫且明顯可見
27不要沖出前燈范圍
小步前進曲
由始至終
永遠小步前進不斷檢查反饋,并且在推進前先做調整
避免占卜
只在你能看到的范圍內做計劃
28解耦
解耦代碼讓改變更容易
耦合使事物緊緊綁定在一起,以至于很難只改變其中之一
只管命令不要詢問
不要從對象中取出值,在加以變換后再塞回去,讓對象自己來完成這些工作
不要鏈式調用方法
當訪問某事物時,使用的點號不要超過一個
避免全局數據
最好給每個方法增加一個額外的參數
如果全局唯一非常重要,那么將它包裝到app中,但是,僅限于你真的非常希望它是全局的
29在現實世界中拋球雜耍
寧彎不曲
30變換式編程
編程講的是代碼,而程序談的是數據
所有的程序都在變換數據—將輸入轉換為輸出,開始用變換式方法來設計吧。
不要囤積狀態,傳遞下去
不要把數據保持在函數或模塊的內部,拿出來傳遞下去
31繼承稅
不要付繼承稅
考慮一下能更好滿足需求的替代方案,比如接口、委托或mlxln
盡量用接口來表達多態
無需繼承引入的耦合,接口或明確描述多態性
用委托提供服務,“有一個”勝過“是一個”
不要從服務中繼承應該包含服務
利用mixin共享功能
Mixin不必承擔繼承稅就可以給類添加功能而接口結合可以讓多態不再令人痛苦
32配置
使用外部配置參數化應用程序
如果代碼對一些在應用程序發布后還有可能改變的值有所依賴那么就應用外部維護這些值
開發者 Shell
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。