分享
 
 
 

C#编码应注意的事项清单

王朝c#·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

这是从WebBlog@Asp.Net上摘下来的一片文章,原文在那我已经记不清了,大概是最近十来天的文章吧,读了以后,感觉不错,不过其中有些地方,我读了以后,糊里糊涂的就过去了,自己也搞不清其中的含义,不过,我倒是把文章翻译出来了,现在这儿放着,以后有机会再该。内容如下:

我现在的客户端广泛的使用PSP(注:程序段前缀),所以我回顾了用在我们项目中的c#代码,并归纳出一个清单。非常感激你能对此做出评论

1. 是否使用异常来显示错误而不是返回状态或错误代码?

2. 所有的类和公共方法是否使用.NET样式的注释?注意,<summary>注释应该论述公共方法是什么。对于怎么使用则应该放在<remarks>块中或是内嵌于正被讨论的代码中

3. 如果方法的参数不正确,是否使用一个异常来进行确认和拒绝?

4. Debug.Asserts是否被用来验证关于代码功能的假定?注释例如:"j will be positive"应该被作为断言(Asserts)重写

5. 那些不应该被初始化的类是否有一个私有的构造函数?

6. 那些被声明为值类型并极少使用为方法参数的类是否从方法中返回或是存放在集合(Collections)中?

7. 那些被只应用在一个程序集中的类是否被标记为internal?

8. 那些能被多线程访问的单态类(Singletons)是否能够被正确地初始化?参考 the Enterprise Solution Patterns book, p. 263.

9. 必须被继承类重载的方法是否被标记为abstract?

10. 不应该被重载的类是否标记为sealed?

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

12. 是否类重载 ToString 而不是定义另外一个方法来输出对象的状态?

13. 是否一个长的信息被发送到日志组件而不是控制台?

14. 一个finally程序块是否紧随一个try构造以用作必须执行的代码?

15. 相对于for(int i…..)构造,是否更倾向于使用foreach?

16. 是否使用属性而不是实现getter和setter方法?

17. 相对于没有赋值器的属性,是否更倾向于使用只读变量?

18. 被继承类重载的所有方法是否使用了override关键字?

19. 是否倾向于使用接口类而不是抽象类?

20. 是否写代码基于接口而不是一个实现类?

21. 那些资源消耗大的对象是否实现了IDisposable接口?

22. 那些实现了IDisposable的对象是否在使用的时候才初始化?

23. 相对于Monitor Enter 构造,是否更倾向于使用lock关键字?

24. 是否线程被事件或Pulse构造从等待状态激活,而不是调用Sleep()等方式“积极”的等待?

25. 如果重载equals,是否正确地实现了这一方法?重载equals的规则是复杂的,细节请参见Richter p153-160

26. 如果== 和!=被重载,由此他们重定向到了Equals?

27. 是否提供了Equals的那些对象也提供了GetHashCode的重载版本?GetHashCode提供了和Equals相同的语义。注意:GetHashCode的重载应该利用对象的成员变量并且必须返回一个不再更改的哈希码。

28. 是否所有的异常类有一个构造函数带有一个字符参数,另外一个构造函数带有一个字符参数和一个异常参数?

29. 是否所有的异常类继承与基本的Matrix异常并正确地适合异常的层次?

30. 是否那些将要被封送或远程调用的类使用了Serializable属性?

31. 是否那些使用了Serializable属性的类,包括Exception和EventArgsl类型的类,有一个默认的构造函数?

32. 那些实现了ISerializable的类是否即提供了必须的GetObjectData重载也提供了带有一个SerializeInfo和一个StreamingContext参数的构造函数?

33. 在作浮点值运算的时候,是否所有的常量加倍而不是整数?

34. 是否所有的代理有一个void返回类型并且避免使用out或ref参数?

35. 是否继承于EventArgs的类中的所有成员都是只读?这将阻止一个预订者更改这个EventArgs以免影响另一个预订者。

36. 代理是否被发布为事件?这将阻止预订者引发事件。详细请参见Lowy, p. 102

37. 通常的安装和卸载nUnit代码是否孤立于那些标记了合适属性的安装和卸载方法?

38. 消极的单元测试是否使用ExpectedExceptin属性去显示一定会抛出某一个异常

参考:

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有