2005/06/20

迅速提升.NET程式設計技巧 - 75個訣竅幫助你減少程式中潛在的問題

《作者簡介》蔡學鏞,清華大學資訊工程碩士、元智大學資訊系兼任講師、美商 O’Reilly 出版社技術編輯、臺灣微軟特約專欄作家、寰震科技技術顧問、研討會講師。蔡學鏞先生著譯有多本 Java 書籍,並在臺灣和大陸的多本 IT 雜誌開闢技術專欄,專長的語言為 C/C++、C#、Java、REBOL。他的聯繫方式:xy.cai@msa.hinet.net

想要讓開發出來的程式碼穩固且容易維護,除了有必要適當地採用設計模式(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這兩個工具。

2005/06/09

微軟發布預覽版「白馬」開發者工具 - Whitehorse, Visual Studio 2005 Team Systm

微軟公司26日發布預覽版的新開發者工具,目的在協助企業用戶加速建置客製化的網路應用程式。

軟體巨人發布「社群技術預覽」版模組化工具(modeling tools),昔日代稱「白馬」( Whitehorse),日後會納入微軟為企業應用程式開發者設計的Visual Studio 2005 Team System。

新的模型化工具讓開發者把網路應用程式視覺化,即用複雜的圖形代表軟體元件。微軟首席產品經理Prashant Sridharan說,此概念的用意,是讓開發者更容易洞悉程式內部組合的方式,以增進開發者的生產力並提昇軟體的品質。

「傳統上,模型化工具是通用型的,與基本程式碼的結構少有關聯,」他說:「雖然圖形畫得很漂亮,但對實際動手發展程式的人來說,所知卻有限。」結果造成開發出來的應用程式達不到預期,或功能不盡理想。
模型化就軟體發展而言不是新觀念,但更好的工具和效能更強的電腦,可讓模型化比以往更實用。整體而言,隨著企業費力管理日益複雜的運算系統,對模型化與設計的興趣已增濃。

微軟競爭對手如IBM、Borland Software等,也紛紛投資模型化。Borland周一剛發表自家的模型化工具,稱為Together Architect。產品行銷副總裁Erik Frieberg認為,模型化在軟體發展過程扮演的角色,有如企業資源規劃之於商業預測。

不輕易當掉也不需經常維修的高品質軟體,是企業最重要應用程式必備的要件。市場研究公司Gartner估計,「緊要任務」軟體意外停擺的代價,是平均每小時損失10萬美元。Gartner說,整整40%的應用程式故障,皆因軟體問題而起。

開發者工具供應商面臨的一大顧慮,是如何協助企業用戶備妥新軟體,以便擁抱所謂的服務導向架構(SOA)。分析師說,SOA終會導致更有彈性、品質更好而且費用降低的軟體。舉例來說,SOA可讓電子商務網站執行集合多家商業夥伴共同參與的複雜交易,方法是把多重的網路服務(Web services)結合起來,無須程式設計師一一用手寫的程式碼連結商業夥伴。

發布支援Visual Studio模型化工具的軟體開發工具程式,微軟希望藉此鼓勵合作夥伴和客戶建置客製化的模型元件,以描述適合特定產業和任務用的軟體功能。

微軟預定在2005年中發布各種新版的Visual Studio,以配合大舉整頓微軟的開發者工具事業。新的Visual Studio版本是微軟「軟體工廠」(Software Factories)計畫的第一步,目標是把例行任務自動化,以協助企業加速打造客製化的應用程式。

Mercury簡易改裝

有同好有一樣的困擾 - 如何使用自己的data logging軟體,因此寫了這篇來分享我的簡易改裝。 Background 雲豆子 MERCURY roaster 烘豆機的設計是使用自行開發的軟體,來:1. 操控風門/火力; 2. data logging/自動烘焙。 ...