2009年4月23日 星期四

程序員修煉之道 (The Pragmatic Programmer From Journeyman to Master) 第三章讀書心得

續上一章 程序員修煉之道 (The Pragmatic Programmer From Journeyman to Master) 第二章讀書心得.

此為讀後重點筆記,好書值得大家購買閱讀.

本章開始介紹程式員應該設置好有效率的工作環境和工具. 建立專屬於自己的一套火藥庫,並不斷將這套環境更新及進化.

純本文的威力在於它沒有太多格式問題,人腦可理解也很容易寫程式去解析它. 雖然文字檔是人眼可讀的,但只要寫入的人無腦,還是能寫入一堆不可讀的資料,讓文字檔失去人腦可讀的特性.

Shell 這方面,只能說 GUI 讓更多人擁抱電腦,但在 Shell 才能讓電腦發揮它的長處 - 重覆性的耗時工作.

編輯器算是影響程序員產能的重要因素之一吧! 雖然我知道打開筆計本寫扣看起來很屌很大師,但我還是寧願打開我的 IDE ,背好熱鍵,讓 IDE 幫我產生樣版打出正確的名稱.

版本控制真的是好物,但不知為何總有人喜歡這邊留一份那邊留一份,然後再來人眼比對. 我想這這就是學校講授上和業界實務上的鴻溝之一吧學校沒教的事吧! XD

測試首先就是要冷靜,不要有先入為主的假設,遇到假設就要能證明它. 最後找出臭蟲的源頭並修正它,不要只做些表像的修補工作. 試問你家馬桶大便沖不下去, 1)你會每次大便完,把大便撈出來丟垃圾桶? 2)還是把馬桶修好?

文字處理算是程式員常常在接觸的東西,所以學好一個本文處理語言算是有益無害的東西. 有時只是臨時需要(用完可丟的)一個文字處理小程式,像 JAVA 的正規表達式的寫法就很難用,這時你若會寫 Ruby 就方便多了! 雖然我對於學新技術很排斥(我不愛追最新的東西,我覺得這東西追不完,這個十年你可以看到都是這些人在追,但下個十年可能就是完全沒看過新的一批人了. 至少我會想拿這些時間去學些可以永遠使用的技能. 但我還是很感謝勇於追新技術又肯分享的人.),但我不排斥能讓我早點下班的技術觀念. XD

透過程式碼生成器,可以將一些重覆的概念封裝在同一處,讓產生器根據此處來產生其它語言程式碼(讓它變成一個 Build 的步驟之一),變動只出現在一個地方,其它所需要的變動都讓生成器幫程式員做完了.

第三章 The Basic Tools

The Power of Plain Text

  • 使用可讀性的純文字,而不是用純文字寫些不可讀的東西來困擾自己.

Shell Games

  • GUI 限制了某些原本應該能達成的功能.

Power Editing

  • 自己是否已經發揮 IDE 的最大效用.
  • 用好一個 IDE 而不是每種都碰一點但又不熟.
  • 讓熱鍵變成你的反射動作. 沒有人在用滑鼠寫扣的,除非你是 CP 流的人還說的過去.

Source Code Control

  • 再好的記性都比不上版本控制系統.

Debugging

  • 解決問題而不是找理由或是責怪創造他的人.
  • 冷靜以對,而不是一股傻勁就開始玩泥巴.
  • 找到問題發生的源頭,而不只是胡亂解決表面上的問題.
  • 試著把問題講解給別人聽.
  • 不要什麼問題一開始就先入為主地認為是別人的問題. 再檢查一下自己的程式.
  • 若覺得這段程式碼應該是對的,就拿出證明而不要只是瞎猜假設.

Text Manipulation

  • 至少學一種本文處理程式.

Code Generators

  • 被動式程式產生器產生出來的結果是會被保留下來的. ex: 事先產生需要昂貴計算的查表(儲存結果),這份表格會被保留,之後就不用再經過計算來取得結果.
  • 主動式程式產生器產生出來的結果是用完即丟的. ex: 利用 SQL Schema 當做來源,透過程式產生器產生高階的對應程式物件,這行為屬於 build code 的一部份(代表每次都會重新產生). 這樣做的好處是 – DRY(Don’t Repeat),只有一個地方負責資料庫表格的結構.
  • 在由不同程式語言所組成的應用程式中,有時會有兩個物件對應到同一個概念的情況(重覆是一件不好的事)發生. 此時可利用獨立於程式之外的的表達方式,利用程式產生器來產生各自的程式碼.
  • 產生器不一定是要產生程式碼,也可以用來產生 XML, HTML, 文字檔.

0 則回應:

Related Posts Plugin for WordPress, Blogger...