首頁
中文書目錄
原文書目錄
 站內快速搜尋
資源中心
Book Series
Special Interest













■好消息,歐萊禮書籍已重新鋪貨至各大書局及網路書店,歡迎讀者選購       ■歡迎各院校採用歐萊禮書籍,學校團購請洽校園服務團隊

[書籍導讀]

Perl Best Practices
— 半畝方塘一鑑開,天光雲影共徘徊,問渠那得清如許?為有源頭活水來。

某個靜謚的午后,朱熹散步到一方池塘前,看著清澈的池水,像鏡子一樣地倒映著天光雲影,不禁想著,這池塘為何能如此清澈呢?嗯,應該是有個源頭,不斷地注入新鮮的活水吧。

下意識地點頭之後,你心裡不禁泛起陣陣漣漪,也想找個理想的下午,和團隊裡的幾個 Perl 程式人員,來個 Code Review,享受一下所謂的天光雲影。相信我,你不會想再做第二次。至少,是在看過本書之前。

是否自問過,你的 Perl 程式,能攤在陽光下,讓一群人做 Code Review 嗎?你確定其他人(或將來的你),能輕鬆愉快地維護、改進、與重利用你的程式,並不時看到那撰碼智慧的天光雲影嗎?

《好好檢視自己的風格與手法》

程式人人會寫,寫出好程式可就不是,更別說是一群人寫出好程式。學會「寫出」Perl 可能只是一個禮拜的工夫,「寫好」Perl 可是經年累月的修煉,其中,更有無數的叉路,引你步入歧途,積非成是(或貽害後世)。如果你是新手,應該以正確的觀念來寫 Perl;如果你是經驗豐富的老鳥,更應該好好檢視自己的風格。「達人」之路,呎尺天涯,全在你一念之間。

《檢視團隊的風格與手法 - 形成團隊的撰碼標準》

仔細想想,你寫的 Perl 程式能自我說明嗎(不用你說明,別人就能看懂)?夠強健、有效率、可重利用、好維護嗎?這些目標,對個人已屬不易,遑論整個團隊。你應該將這本書,引進你的 Perl 團隊,當作整個團隊的 Coding Convention。確保團隊中的每位成員桌上都有這本書,再也沒有藉口寫出很爛的 Perl 程式。這是你們能彼此信賴、高枕無憂的必要條件。

雖然,Perl 的名言:「達成目的的手法不只一種」,對多數程式語言來說,這都是事實。然而,當中確實存在著相對好的,經得起考驗的作法。要寫這樣的一本書,需要有公信力,需要經得起挑戰與試煉。本書的出版,廣受各方認同與推崇,提供的指導方針確實可行,而且,全球各地許多開發高手已經在用,在 Amazon 上也有四顆半星的評價。

《作者 Damian Conway -- 三次 Larry Wall Award 的得主》

這樣一本幾近福音式的 Perl 書籍,該由誰來執筆(除了夠資格,還要有膽識)?Damian Conway 無疑是最有說服力的人選。Damian 在 Perl 的領域裡,堪稱大師,並且是一名熱心的貢獻者。他負責 CPAN 上數十個模組,更是數本 Perl 經典名著的作者,包括《Perl Hacks》,《Object Oriented Perl》等,全都是 Amazon 上四顆半、五顆星的好書。如果你是 Perl 的程式人員,不論新手、高手,或個人、團隊,這本書絕對不該錯過。你應該將它放在手邊,放在床頭,時時參考,時時溫習,最好帶入你的夢鄉。

《本書所涵蓋撰碼技術與用法》

本書共分十九章,每個章節各自涵蓋撰碼技術的各個面向,從程式碼配置、資料和控制結構的選擇、介面的設計實作、模組化、物件導向、類別繼承,I/O、正規表示式、參考位址、記憶體處理、效能最佳化、錯誤處理、測試、及除錯等,一路到與其他程式語言互動、處理組態檔、文字格式化、繫結變數、效能評量和側寫、快取機制等技術。全書分成 256 個指導方針,每個方針都經仔細論證,都有參考範例(好的(粗體)與不好的都有,很清楚)。苦口婆心,勸你這樣做,別那樣做,改掉一些錯誤的習慣。真的,每個錯誤的習慣,背後都有很多辛酸的故事,也會帶來慘痛的後果。

這些指導方針被設計成能夠共同運作,產生清晰、強健、有效率、具維護性的簡明程式碼。當然,這並非放諸四海皆準的唯一實務作法。但本書確實提供連貫一致、用途廣泛的建言,依據的是真實世界裡的程式實務,而不是軟體應該如何打造的象牙塔理論。

提醒讀者,本書是進階書籍、是參考書,不是學習 Perl 的入門書。另外,有些指導方針小到如程式碼的退縮配置等,或許有人認為這是程式人員的個人主觀喜好,你可以選擇忽略,但在那之前,先聽聽作者的理由。有些指導方針,如記憶體、效能議題的考量,單憑自己的嚐試,實屬不易,更應該反覆思量作者的論述。本書依指導方針編寫,可隨意瀏覽,也可逐章細讀,任君選擇。

《本書內容》

將本書內容,依章節略敘如下,方便讀者對全書擷取一個大概的樣貌:

第 1 章《最佳實務》說明為何值得花時間重新評估你當前的撰碼實務,並提出如何培養良好撰碼習慣的建言。

第 2 章《程式碼配置》要解決諸多爭議性十足的程式配置議題。本章建議如何設立區塊分界字元,區分內建函式以及次常式和變數之關鍵字,將運算子、終結符號、分界字元、以及其他標號擺在何處等。最後提出方便的工具,讓多數配置任務自動化。

第 3 章《命名規則》協助你替變數、次常式、以及名稱空間,選擇更具描述性的名稱。此外,也示範一致性命名手段的各種元素如何協同運作,以改良程式的整體維護性。

第 4 章《值和運算式》提供一組簡單規則,當你建立字元字串及清單等時,協助你避開常見陷阱。主題包括如何避免意外的變數 interpolate﹙以及 non-interpolate﹚、對非列印字元所採取的可靠且可讀的手法、避免 bareword、並且馴服 heredoc、長數字和清單等。

第 5 章《變數》探索使用變數的強健手法。文中說明套件變數或標點變數的內在缺點,在可行之處,提出較安全的替代選項,在無替代選項時,建議較安全的實務作法。本章的後半部會介紹幾種有效率、維護性高的技巧,以處理陣列和雜湊表中的資料。

第 6 章《控制結構》檢視 Perl 豐富的控制結構,鼓勵你使用那些易維護、不易出錯、或較有效率的控制結構。本章提出一組簡單的指導方針,以決定對特定任務而言,for、while、或 map 之中哪一個才是最恰當的選擇。我們也會討論有效使用反覆器變數,包括必須同時以鍵和值繞行雜湊表項目的情況。

第 7 章《說明文件》建議一系列技巧及範本式的手法,以撰寫使用者和技術說明文件,討論何時、何處、以及如何撰寫有用以及準確的註解。

第 8 章《內建函式》討論使用 Perl 最著名之內建函式的較佳方式,包括 sort、reverse、scalar、eval、unpack、split、substr、values、select、sleep、map、以及 grep。文中也總結出其他許多有用的「非內建」的內建函式﹙來自標準 Perl 發行套件和 CPAN 上的兩個模組﹚。

第 9 章《次常式》說明一些有效率以及具有維護性的方式,以撰寫 Perl 次常式,包括位置、命名、以及可有可無引數的使用,引數驗證以及預設值,安全的呼叫及傳回約定,各種情境中可預測的傳回值,以及為什麼應該避免次常式原型及隱性傳回值。

第 10 章《I/O》說明如何以可靠方式開啟和關閉檔案、何時使用以列為基準的資料輸入、如何正確偵測互動式應用程式、提示的重要性、以及如何在長時間非互動式任務中提供最佳回饋給使用者。

第 11 章《參考位址》提出建言,解開 Perl 眾多提領(解參照)語法的神秘之處,討論為何符號參考位址製造的問題比能解決的問題更多,然後建議你避免使用循環式參考位址鏈,以免造成記憶體漏洞。

第 12 章《正規表示式》介紹使用正規表示式的指導方針。文中建議使用延伸格式,針對Perl令人困惑的「單列」和「多列」比對模式,提出一種簡單但罕見的解決辦法,提醒你比對空白太過精確時的危險性,說明如何避免使用易出錯的數值變數,介紹強健手法,以建立複雜但仍具維護性的正規表示式,提出一些讓緩慢比對最佳化的指示,最後以說明不要使用正規表示式的時機作為結論。

第 13 章《錯誤處理》提倡以例外事件為基礎的一致性手法,處理錯誤,然後說明為什麼例外事件會比特殊傳回值或旗標更好的原因。文中也建議你使用例外事件物件,探索其宣告、建立、拋出、捕捉、以及處理的細節。

第 14 章《命令列處理》說明命令列介面的設計和實作﹙針對個別程式和應用程式集組﹚。文中會建議幾個模組,使你的命令列介面更為一致、可預測,同時也能大量減少實作這些介面所需付出的精力。

第 15 章《物件》和第 16 章《類別階層》提供強健而有效率的手法,建立 Perl 之物件和類別階層。此手法可提供完全的封裝物件,而無須受到效能的懲罰,支援單一繼承和多重繼承,而不會碰到常見的問題,諸如屬性衝撞、不完全的初始設定、部份解構、或者不正確的方法自動載入。第 16 章也會介紹一個新模組,讓這些強健有效率的類別可以用半自動的方式建立。

第 17 章《模組》談的是非物件導向模組,探索建立模組、設計其介面、宣告以及檢查其版本編號、以及將現有程式重構成模組的最佳方式。本章也會討論 Perl 標準程式庫和 CPAN 上眾多免費可用之現有模組。

第 18 章《測試和除錯》鼓勵你使用測試,提倡以核心 Test:: 模組進行測試驅動的設計和開發。此外,也提出一些技巧,說明有效之除錯技術,包括說明各種模組,以及可以讓除錯簡單一點的免費工具。

第 19 章《其他主題》提供各種主題的指導方針,諸如修正控制、和其他語言寫成的程式互動、處理組態檔、文字格式化、繫結變數、對程式進行效能評量和側寫、快取機制技術、以及有關重構的一般性建言。

附錄 A《Perl 必要之最佳實務》以三份清單,總結出本書中最重要的 30 則指導方針。附錄 B《Perl 最佳實務》列出全部 256 則指導方針,而且有各章次和位置的交叉參考資訊。附錄 C《編輯器組態》提供 Vim、Vile、Emacs、TextWrangler、以及 BBEdit 文字編輯器的有用組態選項。附錄 D《推薦的模組和工具》列出本書建議的各種模組及交叉參考資訊,而且對當中最有用的次常式提出簡要的說明。

《結語》

當你閱讀本書建言時,試著將一些先入為主的觀念放一旁,好好反思一下這本書所述與現存程式之間的差別:分析一下新實務所提出的論據,問自己是否掉進那些新實務試著避開的陷阱;考慮一下書中所建議的撰碼技巧是否值得一試。

反覆思考這些議題﹙對你當前撰碼方式保持警醒﹚,會有很大的益處,即使最後你根本不採用任何一道建言。當然,也可依你的真實狀況,對這些指導方針,加以修改,再推銷給你的團隊。

這不是一本教你「寫 Perl」的書,而是一本引導你與團隊,寫出「好 Perl」的書。

楊仁和
11/01/2007

| 首頁 | 聯絡我們 |
© 2009, O'Reilly Media, Inc. Taiwan Branch