ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:18.17KB ,
资源ID:19590011      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19590011.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C#程序员编码好习惯Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C#程序员编码好习惯Word文件下载.docx

1、11. 不要硬编码数字的值,总是使用构造函数设定其值。12. 只有是自然结构才能直接使用const,比如一个星期的天数。13. 避免在只读的变量上使用const。如果想实现只读,可以直接使用readonly。public class MyClass public readonly int Number; public MyClass(int someValue) Number = someValue; public const int DaysInWeek = 7; 14. 每个假设必须使用Assert检查a) 平均每15行要有一次检查(Assert)using System.Diagnost

2、ics;object GetObject() object obj = GetObject();Debug.Assert(obj != null);15. 代码的每一行都应该通过白盒方式的测试。16. 只抛出已经显示处理的异常。17. 在捕获(catch)语句的抛出异常子句中(throw),总是抛出原始异常维护原始错误的堆栈分配。catch(Exception exception) MessageBox.Show(exception.Message); throw ; /和throw exception一样。18. 避免方法的返回值是错误代码。19. 尽量避免定义自定义异常类。20. 当需要定

3、义自定义的异常时:a) 自定义异常要继承于ApplicationException。b) 提供自定义的序列化功能。21. 避免在单个程序集里使用多个Main方法。22. 只对外公布必要的操作,其他的则为internal。23. Avoid friend assemblies, as it increases inter-assembly coupling.24. Avoid code that relies on an assembly running from a particular location. 25. 使应用程序集尽量为最小化代码(EXE客户程序)。使用类库来替换包含的商务逻辑。

4、26. 避免给枚举变量提供显式的值。/正确方法 public enum Color Red,Green,Blue /避免 Red = 1,Green = 2,Blue = 3 27. 避免指定特殊类型的枚举变量。/避免 public enum Color : long 28. 即使if语句只有一句,也要将if语句的内容用大括号扩起来。29. 避免使用trinary条件操作符。30. 避免在条件语句中调用返回bool值的函数。可以使用局部变量并检查这些局部变量。bool IsEverythingOK() if (IsEverythingOK () /替换方案 bool ok = IsEveryt

5、hingOK();if (ok) 31. 总是使用基于0开始的数组。32. 在循环中总是显式的初始化引用类型的数组。 MyClass array = new MyClass100;for(int index = 0; index array.Length; index+) arrayindex = new MyClass();33. 不要提供public 和 protected的成员变量,使用属性代替他们。34. 避免在继承中使用new而使用override替换。35. 在不是sealed的类中总是将public 和 protected的方法标记成virtual的。36. 除非使用intero

6、p(COM+ 或其他的dll)代码否则不要使用不安全的代码(unsafe code)。37. 避免显示的转换,使用as操作符进行兼容类型的转换。Dog dog = new GermanShepherd();GermanShepherd shepherd = dog as GermanShepherd;if (shepherd != null ) 38. 当类成员包括委托的时候a) Copy a delegate to a local variable before publishing to avoid concurrency race condition. b) 在调用委托之前一定要检查它是

7、否为nullpublic class MySource public event EventHandler MyEvent; public void FireEvent() EventHandler temp = MyEvent; if(temp ! temp(this,EventArgs.Empty);39. 不要提供公共的事件成员变量,使用事件访问器替换这些变量。 MyDelegate m_SomeEvent ; public event MyDelegate SomeEvent add m_SomeEvent += value; remove m_SomeEvent -= value;4

8、0. 使用一个事件帮助类来公布事件的定义。41. 总是使用接口。42. 类和接口中的方法和属性至少为2:1的比例。43. 避免一个接口中只有一个成员。44. 尽量使每个接口中包含35个成员。45. 接口中的成员不应该超过20个。a) 实际情况可能限制为12个 46. 避免接口成员中包含事件。47. 避免使用抽象方法而使用接口替换。48. 在类层次中显示接口。49. 推荐使用显式的接口实现。50. 从不假设一个类型兼容一个接口。Defensively query for that interface.SomeType obj1;IMyInterface obj2;/* 假设已有代码初始化过obj

9、1,接下来 */ obj2 = obj1 as IMyInterface;if (obj2 != null) obj2.Method1();else /处理错误 51. 表现给最终用户的字符串不要使用硬编码而要使用资源文件替换之。52. 不要硬编码可能更改的基于配置的字符串,比如连接字符串。53. 当需要构建长的字符串的时候,使用StringBuilder不要使用string54. 避免在结构里面提供方法。a) 建议使用参数化构造函数b) 可以重裁操作符55. 总是要给静态变量提供静态构造函数。56. 能使用早期绑定就不要使用后期绑定。57. 使用应用程序的日志和跟踪。58. 除非在不完全的s

10、witch语句中否则不要使用goto语句。59. 在switch语句中总是要有default子句来显示信息(Assert)。int number = SomeMethod();switch(number) case 1: Trace.WriteLine(Case 1:); break; case 2:Case 2: default : Debug.Assert(false);60. 除非在构造函数中调用其他构造函数否则不要使用this指针。/ 正确使用this的例子 public MyClass(string message ) public MyClass() : this(hello) 6

11、1. 除非你想重写子类中存在名称冲突的成员或者调用基类的构造函数否则不要使用base来访问基类的成员。/ 正确使用base的例子public class Dog public Dog(string name) virtual public void Bark( int howLong) public class GermanShepherd : Dog public GermanShe pherd(string name): base (name) override public void Bark(int howLong) base .Bark(howLong);62. 基于模板的时候要实现

12、Dispose()和Finalize()两个方法。63. 通常情况下避免有从System.Object转换来和由System.Object转换去的代码,而使用强制转换或者as操作符替换。class SomeClass /避免:class MyClass void SomeMethod(T t) object temp = t; SomeClass obj = (SomeClass)temp;/ 正确: where T : SomeClass SomeClass obj = t;64. 在一般情况下不要定影有限制符的接口。接口的限制级别通常可以用强类型来替换之。public class Customer public interface IList Customer /正确:public interface ICustomerList : IList65. 不确定在接口内的具体方法的限制条件。66. 总是选择使用C#内置(一般的generics)的数据结构。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1