想要讓開發出來的程式碼穩固且容易維護,除了有必要適當地採用設計模式(Design Patterns)之外,也有必要採用編程指導方針(Coding Guidelines),做為寫程式時依循的準則。設計模式是在設計階段進行的,主要由系統設計者(System Designer)負責,所以和程式員的關係比較不是那麼密切。至於編程指導方針,就和程式員的關係相當密切了。對C#來說,最重要的編程方針是美國微軟MSDN網站上的〈Design Guidelines for Class Library Developers〉。
從他人的經驗中,學習程式技巧和好習慣
我的工作有一部份是在Code Review(Code Reading),也就是檢視別人寫的程式碼。當我在讀別人的程式碼時,深深覺得:「程式編譯成功,不代表就沒問題」。語法使用正確,且API呼叫正確,不代表程式碼就是好的程式碼。好的程式員,除了熟悉語法和API之外,也應該要熟悉許多良好的程式習慣和技巧,這些習慣和技巧,可以隨著經驗的累積慢慢培養,或者藉由學習別人累積的經驗快速培養。當然,我傾向於使用快速的方式,所以,只要遇到這一類的書,我都不會錯過。多讀這一類的好書,你會發現程式技巧進步很快。目前這一類的書,以C/C++最多,Java次之,至於C#最少(畢竟C#是比較新的語言)。C/C++以Scott Meyers的《Effective C++》和《More Effective C++》為代表作,Java以Joshua Bloch的《Effective Java Programming Language Guide》為代表作。至於C#,除了可以參考前面提到的MSDN 〈Design Guidelines for Class Library Developers〉,今年也有數本評價不錯的書出版了,包括了:
* 《.NET Gotchas》(O'Reilly)
* 《Effective C#》(Addison-Wesley)
* 《Practical Guidelines and Best Practices for Microsoft Visual Basic and Visual C# Developers》(Microsoft Press)
如果這三本書你都想讀的話,我建議先讀《.NET Gotchas》,這本書讀起來比另外兩本更有趣。75個改善.NET程式的技巧 《.NET Gotchas》共有八章,共計75個Gotchas。Gotcha就是Got You的意思,有別於Effective書籍喜歡將每一個技巧名為Item,.NET Gotchas將這些技巧俏皮地稱為Gotcha。 每個Gotcha都包括了:
- 編號
- 名稱:使用一個完整的句子,所以很容易理解。
- 敘述:詳細地描述此技巧。
- 範例:同時提供C#和Visual Basic .NET版本的範例。
- In a Nutshell:用一段文字作結論。
相關參考條文第一章介紹的主題是CLR/.NET Framework,第二章是Visual Studio和編譯器,第三章是語言和API,第四章是不同語言之間的合作,第五章是垃圾收集,第六章是繼承和多型,第七章是多執行緒,第八章是COM和.NET企業服務。當我最近在Review別人的程式時,我常常會覺得可惜:「如果這個程式員讀過《.NET Gotchas》就不會犯這樣的錯誤了」。《.NET Gotchas》將許多常犯的疏失一一指正出來。 想要改善.NET程式碼的品質,除了讓程式員多多閱讀像《.NET Gotchas》這類的好書之外,也可以採用一些自動化的工具幫助檢查,減少不好的編程風格。
近來大家目光的焦點都在Design Patterns,卻忽略了程式技巧的重要性。有好的Design Pattern架構,但是卻沒有好的程式技巧,依然無法產生高品質的程式。我建議所有的.NET程式員都去閱讀本文所提到的3本.NET程式設計技巧書籍,並採用devAdvantage以及FxCop這兩個工具。