<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      happyhippy

      這個世界的問題在于聰明人充滿疑惑,而傻子們堅信不疑。--羅素


      35.重寫函數優于事件處理器。

         Prefer Overrides to Event Handlers。
         e.g.:實現Form實例時,選擇重寫OnMouseDown()方法而不是添加事件句柄OnMouseDown()。使用事件有更大的伸縮性,可以在一個事件上添加多個句柄;當有一個派生類中只有一個函數來處理一個事件時,最好用重載太提高可維護性。


      36.合理使用.NET運行時診斷。
         Leverage .NET Runtime Diagnostics。
         System.Diagnostics.Debug, System.Diagnostics.Trace和System.Diagnostics.EventLog類可以在程序運行時創建診斷信息。Trace類是由預處理符TRACE進行控制;Debug類是由DEBUG預處理符進行控制;EventLog類可以寫一些系統日志,EventLog類不支持運行時配置,但可以把它封裝到一個統一的簡單接口中。

      37.使用標準配置機制。
         Use the Standard Configuration Mechanism。
         在WinForm應用程序中,每個應用程序域最多只有一個應用程序程序配置文件,默認的配置文件應該與應用程序位于同一個目錄中,而且以<應用程序名>.<擴展名>.config來命名。Web應用程序相對而言就比較靈活,每個目錄都可以有一個自己的配置文件,以web.config來命名。

      38.定制和支持數據綁定。
         Utilize and Support Data Binding。
         使用數據綁定比自己寫代碼要簡單得多;在對文字元素通過屬性來顯示時,盡可能的使用數據綁定而不是顯式賦值;在WinForm中,可以對同步的對綁定在多控件上的數據進行相關數據源的檢測。.Net框架支持把一個對象的屬性映射到控件的屬性上(e.g:textBoxName.DataBindings.Add("Text",myDataValue, "Name");可以把textBoxName控件的“Text”屬性上綁定了MyDataValue對象的"Name"屬性。)。

      39.使用.NET驗證。
         Use .NET Validation。
         Web應用程序應該在瀏覽器上進行數據驗證,一般是使用JavaScript,一些Web驗證控件在生成HTML頁面中生成一些JS代碼,當每一項輸入時,不用每次返回數據到服務器上。但這還不夠,我們還是要在服務器端做一些額外的驗證,以免受到程序式的攻擊。WinForm中用戶的輸入可以直接用C#代碼來驗證,所有的Windows控件都是可驗證的,一般使用屬性訪問時的異常來指示非法的輸入。

      40.根據需要選用恰當的集合。
         Match Your Collection to Your Needs。
         訪問多維數組比訪問鋸齒數組的效率高,訪問多維數組時編譯器在數組的每個維上是使用的是指針算法,而鋸齒數組則要為每個一維數組查找正確的(指針引用)值。
         ArrayList的效率和數組差不多,其優點是可以在運行時動態調整容量大小;隊列(Queue)和棧(Stack)是在System.Array類上提供了特殊的接口,它們的內部存儲都是基于數組的,修改容量大小時同樣會帶來性能損失;隊列的默認大小是32(0x20,乘2增長),而棧的默認大小是10(乘2增長),ArrayList默認是0(0-4-8-16……乘2增長);
         ListDictionary類用鍵/值對方式實現了單向鏈表;
         SortedList 和Hashtable都包含鍵/值對,SortedList以鍵進行排序,提供了基于鍵的有序迭代;而Hashtable在給定的鍵上進行查找時更快,可以通過鍵的散列值進行查找(O(1)算法);HashTable的默認大小為11,SortedList的默認大小為0(0-16-32……乘2增長);
         BitArray存儲位數組,它是以整數的數組來存儲數據的;不要用它來替換一般的圖和Boolean數組;
         CollectionBase和ReadOnlyCollectionBase提供了列表和向量結構的基類,DictionaryBase提供了鍵/值對應的基類,DictionaryBase類是建立在Hashtable上的,它的性能與Hashtable是一致的;
         定長buffer使得我們可以在unsafe結構里聲明C風格的數組(e.g:unsafe struct MyClass{public fixed int x[5];}),其主要應用在托管代碼和非托管代碼互操作的情況,除此之外,我們一般使用托管數組。


      41.優先選擇DataSet,而不是使用自定義結構。
         Prefer DataSets to Custom Structures。
         如果我們要創建的集合是一個基于某些算法的、對性能要求嚴格的集合,或者必須有輕便的格式,則我們就要使用自定義結構,否則最好使用DataSet,尤其是類型化的DataSet。


      42.利用特性簡化反射。
         Utilize Attributes to Simplify Reflection.
         特性可以申明運行的意圖,通過使用特性來標記一個元素,可以在運行時指示它的用處以及簡化查找這個元素的工作(通過反射來判斷類或成員上是否應有了某些特性,進而在實際運行中進行配置);通過使用特性來標記意圖,就把大量的責任從開發者身上移到了編譯器身上。

      43.避免過度使用反射。
         Don't Overuse Reflection.
         使用反射,一個應用程序可以通過添加新的組件來更新功能,實現可動態配置的軟件;但同時也帶來安全性的問題(成員調用的參數和返回值是以System.Object類型存在的,我們必須在運行時確保這些類型是正確的)。反射應該只在某些調用目標不能清楚的用接口表示時才使用(e.g:.Net的數據綁定)。很多常規情況下很少用反射,而是使用類廠、委托以及接口來創建代碼,這可以產生出更容易維護的系統。


      44.為應用程序創建特定的異常類。
         Create Complete Application-Specific Exception Classes.
         讓你的用戶在寫catch語句來處理錯誤時更簡單,我們通常要自己創建不同的異常類。當且僅當對于錯誤有不同的行為要處理時,我們才應該創建不同的異常類(從ApplicationException繼承而不是從Exception繼承);可以通過提供所有基類支持的構造函數,來創建全功能的異常類;還可以使用InnerException屬性來承載底層錯誤條件的所有錯誤信息。

       
      文章來源:http://blog.csdn.net/happyhippy/archive/2007/04/09/1557696.aspx

      posted on 2007-04-09 23:21  Silent Void  閱讀(662)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 国产精品一区二区三区污| 欧美精品一产区二产区| 国产亚洲精品第一综合| 特级精品毛片免费观看| 黄色亚洲一区二区三区四区| 午夜国产精品福利一二| 无码国模国产在线观看免费| 久久精品国产亚洲av麻豆小说 | 成人动漫综合网| 免费a级毛片18以上观看精品| 亚洲成人动漫av在线| 成人看的污污超级黄网站免费 | 久久久久成人片免费观看蜜芽| 欧美成人h亚洲综合在线观看| 在线亚洲午夜理论av大片| 亚洲高清WWW色好看美女| 国厂精品114福利电影免费| 人体内射精一区二区三区 | 国产一区二区三区乱码| 国产精品中文字幕日韩| 欧美人成在线播放网站免费| 免费AV片在线观看网址| 国产综合色在线精品| 精品亚洲国产成人av在线| 亚洲 日本 欧洲 欧美 视频| a∨变态另类天堂无码专区| 亚洲国产一区二区av| 欧美黑人XXXX性高清版| 久久九九精品99国产精品| 成人免费在线播放av| 国产一区二区高潮视频| 欧美色欧美亚洲高清在线视频| 精品精品久久宅男的天堂| 国产va免费精品观看精品| 国产人妻精品午夜福利免费| 国产精品一区在线免费看| 免费国产女王调教在线视频| 精品人妻伦一二三区久久| 日韩丝袜欧美人妻制服| 国产精品理论片| 精品国产乱码久久久久APP下载|