国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

C#編碼應(yīng)注意的事項(xiàng)清單

2024-07-21 02:19:57
字體:
供稿:網(wǎng)友
這是從[email protected]上摘下來的一片文章,原文在那我已經(jīng)記不清了,大概是最近十來天的文章吧,讀了以后,感覺不錯(cuò),不過其中有些地方,我讀了以后,糊里糊涂的就過去了,自己也搞不清其中的含義,不過,我倒是把文章翻譯出來了,現(xiàn)在這兒放著,以后有機(jī)會再該。內(nèi)容如下:

我現(xiàn)在的客戶端廣泛的使用psp(注:程序段前綴),所以我回顧了用在我們項(xiàng)目中的c#代碼,并歸納出一個(gè)清單。非常感激你能對此做出評論

1. 是否使用異常來顯示錯(cuò)誤而不是返回狀態(tài)或錯(cuò)誤代碼?

2. 所有的類和公共方法是否使用.net樣式的注釋?注意,<summary>注釋應(yīng)該論述公共方法是什么。對于怎么使用則應(yīng)該放在<remarks>塊中或是內(nèi)嵌于正被討論的代碼中

3. 如果方法的參數(shù)不正確,是否使用一個(gè)異常來進(jìn)行確認(rèn)和拒絕?

4. debug.asserts是否被用來驗(yàn)證關(guān)于代碼功能的假定?注釋例如:"j will be positive"應(yīng)該被作為斷言(asserts)重寫

5. 那些不應(yīng)該被初始化的類是否有一個(gè)私有的構(gòu)造函數(shù)?

6. 那些被聲明為值類型并極少使用為方法參數(shù)的類是否從方法中返回或是存放在集合(collections)中?

7. 那些被只應(yīng)用在一個(gè)程序集中的類是否被標(biāo)記為internal?

8. 那些能被多線程訪問的單態(tài)類(singletons)是否能夠被正確地初始化?參考 the enterprise solution patterns book, p. 263.

9. 必須被繼承類重載的方法是否被標(biāo)記為abstract?

10. 不應(yīng)該被重載的類是否標(biāo)記為sealed?

11. “as” 是否可能被不正確的使用?

12. 是否類重載 tostring 而不是定義另外一個(gè)方法來輸出對象的狀態(tài)?

13. 是否一個(gè)長的信息被發(fā)送到日志組件而不是控制臺?

14. 一個(gè)finally程序塊是否緊隨一個(gè)try構(gòu)造以用作必須執(zhí)行的代碼?

15. 相對于for(int i…..)構(gòu)造,是否更傾向于使用foreach?

16. 是否使用屬性而不是實(shí)現(xiàn)getter和setter方法?

17. 相對于沒有賦值器的屬性,是否更傾向于使用只讀變量?

18. 被繼承類重載的所有方法是否使用了override關(guān)鍵字?

19. 是否傾向于使用接口類而不是抽象類?

20. 是否寫代碼基于接口而不是一個(gè)實(shí)現(xiàn)類?

21. 那些資源消耗大的對象是否實(shí)現(xiàn)了idisposable接口?

22. 那些實(shí)現(xiàn)了idisposable的對象是否在使用的時(shí)候才初始化?

23. 相對于monitor enter 構(gòu)造,是否更傾向于使用lock關(guān)鍵字?

24. 是否線程被事件或pulse構(gòu)造從等待狀態(tài)激活,而不是調(diào)用sleep()等方式“積極”的等待?

25. 如果重載equals,是否正確地實(shí)現(xiàn)了這一方法?重載equals的規(guī)則是復(fù)雜的,細(xì)節(jié)請參見richter p153-160

26. 如果== 和!=被重載,由此他們重定向到了equals?

27. 是否提供了equals的那些對象也提供了gethashcode的重載版本?gethashcode提供了和equals相同的語義。注意:gethashcode的重載應(yīng)該利用對象的成員變量并且必須返回一個(gè)不再更改的哈希碼。

28. 是否所有的異常類有一個(gè)構(gòu)造函數(shù)帶有一個(gè)字符參數(shù),另外一個(gè)構(gòu)造函數(shù)帶有一個(gè)字符參數(shù)和一個(gè)異常參數(shù)?

29. 是否所有的異常類繼承與基本的matrix異常并正確地適合異常的層次?

30. 是否那些將要被封送或遠(yuǎn)程調(diào)用的類使用了serializable屬性?

31. 是否那些使用了serializable屬性的類,包括exception和eventargsl類型的類,有一個(gè)默認(rèn)的構(gòu)造函數(shù)?

32. 那些實(shí)現(xiàn)了iserializable的類是否即提供了必須的getobjectdata重載也提供了帶有一個(gè)serializeinfo和一個(gè)streamingcontext參數(shù)的構(gòu)造函數(shù)?

33. 在作浮點(diǎn)值運(yùn)算的時(shí)候,是否所有的常量加倍而不是整數(shù)?

34. 是否所有的代理有一個(gè)void返回類型并且避免使用out或ref參數(shù)?

35. 是否繼承于eventargs的類中的所有成員都是只讀?這將阻止一個(gè)預(yù)訂者更改這個(gè)eventargs以免影響另一個(gè)預(yù)訂者。

36. 代理是否被發(fā)布為事件?這將阻止預(yù)訂者引發(fā)事件。詳細(xì)請參見lowy, p. 102

37. 通常的安裝和卸載nunit代碼是否孤立于那些標(biāo)記了合適屬性的安裝和卸載方法?

38. 消極的單元測試是否使用expectedexceptin屬性去顯示一定會拋出某一個(gè)異常




參考:

juval lowy, "programming .net components"

jeffrey richter, "applied microsoft .net framework programming"

"enterprise solution patterns using microsoft .net" - available in published form or as a free pdf

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 彩票| 葫芦岛市| 招远市| 古丈县| 江城| 黄浦区| 永胜县| 嵩明县| 临江市| 锡林浩特市| 文化| 正安县| 泗水县| 东丰县| 绥阳县| 丹寨县| 樟树市| 和静县| 无锡市| 淄博市| 黄骅市| 海宁市| 新宁县| 合水县| 西乡县| 兰州市| 东乌| 夏河县| 乐业县| 利川市| 化隆| 博白县| 木兰县| 五家渠市| 裕民县| 绥芬河市| 香格里拉县| 依安县| 育儿| 新绛县| 津南区|