《程式碼整潔之道——程式設計師的職業素養》讀書筆記(一)

YYATM發表於2020-07-08

一些廢話

    這本書半年前讀過,應該是沒有讀完,因為這半年裡Bob大叔在書的前半部分說的話,一直在我的耳畔迴響,並對我的職業習慣有了很大的影響,也不一定很大,但是至少心裡有了那個意識,“專業”的意識。

    前幾天端午節,又讀了這本書,這回讀完了,覺得獲益匪淺,又覺得收穫太少。獲益匪淺:真的是收穫了好多。收穫太少:書裡的寶貴東西太多了,自己還有好多沒有吸收,覺得好可惜。我過去習慣並不好,不愛讀書,更是沒有做讀書筆記的習慣,也沒怎麼見過別人怎麼做讀書筆記。

    想要做一個專業的人,也很想做一些改變。於是,再次拿起這本書,開始在我看來算是精讀的精讀。今天只讀了第1章,有一些覺得很對的話,還有一些覺得應該掌握的但沒有掌握的技能。我的記性不太好,做筆記應該是一個不錯且必要的事情。

    之前也沒有寫過自己的部落格,這也算是我的第一篇博文?如果這算是博文的話。

第1章

一些覺得很對的話

  1. “專業主義”有很深的含義,它不但象徵著榮譽與驕傲,而且明確意味著責任與義務。
  2. 成熟的專業開發人員知道,聰明人不會為了釋出新功能而破壞結構。
  3. 專業的軟體開發人員會牢記建立靈活可維護的結構的軟體設計原則和模式,並在開發軟體時認真遵循。
  4. 如果你希望自己的軟體靈活可變,那就應該時常修改它。
  5. 讓軟體保持固定不變才是危險的!
  6. 不寫程式碼的架構師必然遭殃,他們很快會發現自己跟不上時代了;不學習新語言的程式設計師同樣會遭殃,他們只能眼睜睜看著軟體業一路發展,把自己拋在後面;學不會新規矩和新技術的開發人員更可憐,他們只能在日漸淪落的時候看著身邊人越發優秀。
  7. 讀書,看相關文章,關注部落格和微博,參加技術大會,訪問使用者群,多參與讀書與學習小組。
  8. 業精於勤。真正的專業人士往往勤學苦幹,以求得自身技能的純熟精煉。
  9. 練習,指的是在日常工作之餘專門練習技能,以期自我提升。
  10. 練卡塔的目的不是找出解決方法,而是訓練你的手指和大腦。
  11. 專業軟體開發人員往往會更加努力地嘗試與他人一起程式設計、一起練習、一起設計、一起計劃,這樣他們可以從彼此身上學到很多東西,而且能在更短地時間內更高質量地完成更多工作。
  12. 想迅速牢固地掌握某些事實和觀念,最好的辦法就是與你負責指導的人交流這些內容。
  13. 專業人士會視輔導新人為己任,他們不會放任未經輔導的新手恣意妄為。
  14. 每位專業軟體開發人員都有義務瞭解自己開發的解決方案所對應的業務領域。
  15. 開始一個新領域的專案時,應當讀一兩本該領域相關的書,要就該領域的基礎架構與基本知識作客戶和使用者訪談,還應當花時間和業內專家交流,瞭解他們的原則與價值觀念。
  16. 僱主的問題就是你的問題,你必須弄明白這些問題,並尋求最佳的解決方案。
  17. 開發人員之間互相認同是容易的,但把一方換成僱主,人們就容易產生“彼”“此”之分,專業人士會盡全力避免這樣的狹隘之見。

 一些覺得應該掌握的技能

  1. 自動化單元測試
  2. 測試驅動開發(TDD)
  3. 單元測試和驗收測試
  4. 建立靈活可維護的結構的軟體設計原則和模式
  5. switch語句改為多型結構
  6. N-S(Nassi-Schneiderman)圖表
  7. “米利型”(Mealy)和“摩爾型”(Moore)狀態機
  8. “變換分析”(Transform Analysis)
  9. 用資料流圖進行功能分解
  10. “臨時傳遞資料”(Tramp Data)
  11. “耦合性”(Conascence)
  12. Parnas表
  13. “瀑布式開發”
  14. 每個專業軟體開發人員必須精通的事項:
  • 設計模式。必須能描述GOF書中的全部24中模式,同時還要有POSA書中的多數模式的實戰經驗。
  • 設計原則。必須瞭解SOLID原則,而且要深刻理解元件設計原則。
  • 方法。必須理解XP、Scrum、精益、看板、瀑布、結構化分析及結構化設計等。
  • 實踐。必須掌握測試驅動開發、物件導向設計、結構化程式設計、持續整合和結對程式設計。
  • 工件。必須瞭解如何使用UML圖、DFD圖、結構圖、Petri網路圖、狀態遷移圖表、流程圖和決策表。

 

相關文章