摘要:在幾年前,我就對軟件的敏捷開發有著很高的興趣的。一直覺得,程序員應該是最自由,最輕松的一種職業!而且我也一直在向這個方向努力!我們應該如何做呢?一說到程序員,大家就公認的是腦力民工!為什么?在程序員自己報怨開發環境不好,工作量大,任務重,壓力大的同時,有沒有想過,有些問題其實是程序員自己的原因造成的呢? 我們來看一個流程的例子:從一個問題單開始,你要解決這個問題,首先得申請問題單的查看權限,花5分...
閱讀全文
摘要:Effective C# 原則50:了解ECMA標準Item 50: Learn About the ECMA Standard ECMA標準是C#語言所有功能的官方說明。ECMA-334定義了C#語言1.0的標準,你可以從The C# Programming Language這本書上學習C#2.0的計劃(譯注:現在已經不是計劃了),這本書的作者是Anders Hejlsberg, Scott W...
閱讀全文
摘要:Effective C#49:為C#2.0做好準備Item 49: Prepare for C# 2.0 C#2.0,在2005年已經可以使用了,它有一些主要的新功能。這樣使得目前使用的一些最好的實際經驗可能會有所改變,這也會隨著下一代工具的發布而修改。盡管目前你還可以不使用這些功能,但你應該這些做些準備。 當Visual Studio .net2005發布后,會得到一個新的開發環境,升級的C#語...
閱讀全文
摘要:Effective C# 原則48:了解更多的工具和資源 Item 48: Learn About Tools and Resources 對于C#以及.Net來說這是激動人心的時候。這些工具目前還是比較新的,整個社區都在學習如何使用這些工具。一些資源可以幫助你提高你的知識,以及為.Net和C#創建一個更大的知識社區。這些工具是我每天都向C#開發人員推薦的。關于C#實踐的全部內容還在寫作當中,...
閱讀全文
摘要:Effective C# 原則47:選擇安全的代碼Item 47: Prefer Safe Code .Net運行時已經設計好了,一些懷有惡意的代碼不能滲透到遠程計算機上并執行。目前一些分部式系統依懶于從遠程機器上下載和執行代碼。如果你可以通過Internet或者以太網來發布你的軟件,或者直接從web上運行,但你須要明白CRL在你的程序集中的一些限制。如果CLR不是完全相信一個程序集,它會限制一些...
閱讀全文
摘要:Effecitve C# 原則46:最小化與其它非托管代碼的交互Item 46: Minimize Interop 在開發設計.Net時,MS所做的最聰明的修改之一就是他們意識到,如果沒有辦法整合已經存在的代碼到新的.Net環境中,那沒沒有人會接受這個新的平臺。MS知道,如果沒有辦法來利用已經存在的代碼,這將阻止大家接受它。與其它非托管代碼的交互是可以工作了,但這是可交互唯一可以拿來說一下的有利的...
閱讀全文
摘要:Effective C# 原則45:選擇強異常來保護程序Item 45: Prefer the Strong Exception Guarantee 當你拋出異常時,你就在應用程序中引入了一個中斷事件。而且危機到程序的控制流程。使得期望的行為不能發生。更糟糕的是,你還要把清理工作留給最終寫代碼捕獲了異常的程序員。而當一個異常發生時,如果你可以從你所管理的程序狀態中直接捕獲,那么你還可以采取一些有效...
閱讀全文
摘要:Effective C# 第6章:雜項Chapter 6. Miscellaneous 有些內容不合適專門做一個目錄,但這并不是說它們不重要。對于每個人來說,理解代碼的安全訪問策略是很重要的,就像明白異常處理策略一樣。其它的一些推薦資料是關于經常變化的一些東西,因為C#本身也是一門在發展的語言,要與最新的標準和資訊進行交流。這些變化值得注意一下,而且要為這些變化做準備,它們會在以后溶入到你的工作中...
閱讀全文
摘要:Effective C# 原則44:創建應用程序特定的異常類Item 44: Create Complete Application-Specific Exception Classes 異常是一種的報告錯誤的機制,它可以在遠離錯誤發生的地方進行處理錯誤。所有關于錯誤發生的的信息必須包含在異常對象中。在錯誤發生的過程中,你可能想把底層的錯誤轉化成詳細的應用程序錯誤,而且不丟失關于錯誤的任何信息。你...
閱讀全文
摘要:Effective C# 原則43:請勿濫用反射Item 43: Don't Overuse Reflection 創建二進制的組件時,同時也意味著你要使用遲后綁定和反射來查找你所須要的具有特殊功能代碼。反射是一個很有力的工具,而且它讓你可以寫出可動態配置的軟件。使用反射,一個應用程序可以通過添加新的組件來更新功能,而這些組件是在軟件最開始發布時沒有的。這是有利的。 這一伸縮性也帶來了一些復雜的問...
閱讀全文
摘要:Effective C# 原則42:使用特性進行簡單的反射Item 42: Utilize Attributes to Simplify Reflection 當你創建了一個與反射相關的系統時,你應該為你自己的類型,方法,以及屬性定義一些自己的特性,這樣可以讓它們更容易的被訪問。自定義的特性標示了你想讓這些方法在運行時如何被使用。特性可以測試一些目標對象上的屬性。測試這些屬性可以最小化因為反射時可...
閱讀全文
摘要:Effective C# 原則41:選擇DataSet而不是自定義的數據結構 Item 41: Prefer DataSets to Custom Structures 因為兩個原則,把DataSet的名聲搞的不好。首先就是使用XML序列化的DataSet與其它的非.Net代碼進行交互時不方便。如果在Web服務的API中使用DataSet時,在與其它沒有使用.Net框架的系統進行交互時會相當...
閱讀全文
摘要:Effective C# 原則40:根據需求選擇集合Item 40: Match Your Collection to Your Needs “哪種集合是最好的?”答案是:“視情況而定?!?不同的集合有不同的性能,而且在不同的行為上有不同的優化。.Net框架支持很多類似的集合:鏈表,數組,隊列,棧,以及其它的一些集合。C#支持多維的數組,它的性能與一維的數組和鋸齒數組都有所不同。.Net框架同樣包...
閱讀全文
摘要:Effective C# 原則39:使用.Net驗證Item 39: Use .NET Validation 用戶的輸入可能是多種多樣的:你必須在交互式的控件中盡可能的驗證輸入。寫一些用戶輸入驗證可能很做作,而且也有出錯的可能,但還是很有必要的。不能太相信用戶的輸入,用戶可能會輸入任何內容導致異常發生,進而進行SQL注入式攻擊。我們不希望任何類似這樣的事情發生。你應該了解足夠的信息來懷疑用戶的輸入...
閱讀全文
摘要:Effective C# 原則38:使用和支持數據綁定Item 38: Utilize and Support Data Binding 有經驗的Windows程序員一定對寫代碼從一個控件上取值,以及把值存儲到控件上很熟悉: public Form1 : Form{ private MyType myDataValue; private TextBox textBoxName; priva...
閱讀全文
摘要:Effective C# 原則37:使用標準的配置機制Item 37: Use the Standard Configuration Mechanism 我們要尋求一種避免直接寫代碼的應用程序配置和信息設置方法,我們已經創建了多種不同的策略來存儲配置信息。而我們是要尋求一種正確的方法,我們要不斷提高和改我們的想法,關于哪里是放置這些信息的好地方。INI文件?這是Windows3.1做的事,配置信息...
閱讀全文
摘要:Effective C# 原則36:利用.Net運行時診斷Item 36: Leverage .NET Runtime Diagnostics 當有問題發生時,它們往往并不是在實驗的時候發生的,機器有輕松調試的工具。在很多實際情況中,你不好修正的問題總是發生在用戶的機器上,那里沒有調試環境,也沒有好的方法計算出問題的情況。在實際情況中,有經驗的開發人員會創建一個方法,讓系統在運行時捕獲盡可能多的信...
閱讀全文
摘要:Effective C# 原則35:選擇重寫函數而不是使用事件句柄Item 35: Prefer Overrides to Event Handlers 很多.Net類提供了兩種不同的方法來控制一些系統的事件。那就是,要么添加一個事件句柄;要么重寫基類的虛函數。為什么要提供兩個方法來完成同樣的事情呢?其實很簡單,那就是因為不同的情況下要調用為的方法。在派生類的內部,你應該總是重寫虛函數。而對于你的...
閱讀全文
摘要:Effective C# 第五章:和Framework一起工作Chapter 5. Working with the Framework 我的同事,也是我的朋友Martin Shoemaker研究一個很嚴肅的問題,那就是:“我必須寫這樣的.Net代碼嗎?” 答案是,也希望是:不。你應該使用你手頭上有的,也是你會用的工具來幫助你寫代碼。 .Net框架是一個很豐富的類庫,你對框架學習的越多,你自己要寫...
閱讀全文
摘要:Effective C# 原則34:創建大容量的Web APIItem 34: Create Large-Grain Web APIs 交互協議的開銷與麻煩就是對數據媒體的如何使用。在交互過程中可能要不同的使用媒體,例如在交流中要不同的使用電話號碼,傳真,地址,和電子郵件地址。讓我們再回頭來看看上次的訂購目錄,當你用電話訂購時,你要回答售貨員的一系列問題: “你可以把第一項填一下嗎?” “這一項的...
閱讀全文