分享,讨论Programming的习惯
1//写这篇文章的目的主要是和大家分享编程的习惯,如果有不对的欢迎大家支出,如果有更好的习惯方法也请提出来。
2//当然文章还有许多的疏漏支出欢迎大家补全,真正做到完备!
3
4
5//大小写规范:
6//命名空间,类,结构体,方法名,属性名,static常量,每个单词首字母大写,接口以I开头,并且首字母大写如IDispose;const常量全部字母大写
7//字段名每个单词首字母小写
8
9//起名规范以及理解:
10//命名空间:公司+项目+包
11//类,属性,字段,结构体:名词或者名词性词组(因为描述的是一类实体或者实体属性或者数据),类代表对事物的抽象,他自身有自己的属性和行为,
12//例如人有自己的名字年龄等信息,同时能够说话,走路。结构体主要是对数据的一种组织。
13//方法,接口:动词或者动词词组(描述的是行为,即CAN-DO)
14
15//字段,方法,属性,类等的名字要充分表达出他们自己的功能,能够让代码阅读者不需要看注释就能够知道她的意思,
16//尽量不要缩写,毕竟无论名字多长编译器会帮助你做转化工作,当然也不要太长。呵呵,过尤不及么!
17//例如:数据库连接sqlConnectionString与mysqlConnectionString表达出他们是连接字符串,sqlConnection与mysqlConnection表达出他们是连接对象
18namespace CodeRule
19{
20 public class TestShow
21 {
22 //错误的习惯,不应该把内部字段暴露给其它对象,一是不符合规范,二是暴露实现细节
23 public string name;
24
25 //正确的习惯
26 private object aobject;
27 /// <summary>
28 /// 正确的方法,字段内部使用,其他对象只能通过属性来访问,不知道具体实现细节。当然如果属性是只有子类可见就应该把Public改为protected
29 /// 如果是只读的就应该把Set去掉,我们不应该把暴露扩大化。
30 /// </summary>
31 private string name; // private int justToCompare 该处也返回Name,同样的功能,不同的内部实现,相同的访问方法
32 public string Name // public string Name
33 { // {
34 get { return name; } // get{return justToCompare.ToString();}
35 set { name = value; } // set{justToCompare=Convert.ToInt32(value);}
36 } // }
37
38 //错误的习惯,既然通过属性可以进行Name的读写了,就不应该再提供方法对其的读写操作;二者可以选择其一,不过C#中主要通过属性,Java用方法的居多。
39 public string GetName()
40 {
41 return name;
42 }
43 public void SetName(string name)
44 {
45 return name = name;
46 }
47
48 //有的参数不能为空哪么就应该检查之,我们假设下面的aobject不能为空,哪么下面的习惯就是错误的,
49 //我们应该先检查aobject在它为空的时候做一些处理,然后再执行其它操作,对于属性也是如此
50 public void SetObject(object aobject)
51 {
52 this.aobject=aobject;
53 }
54 }
55}
56//其它:对于自定义集合类要实现IEnumerable接口,自定义事件以Handler结尾,自定义异常以Exception结尾,
57//要实现IDisposable接口,及时释放资源
希望大家可以共同分享编程的经验习惯,提高水平。谢谢!
2//当然文章还有许多的疏漏支出欢迎大家补全,真正做到完备!
3
4
5//大小写规范:
6//命名空间,类,结构体,方法名,属性名,static常量,每个单词首字母大写,接口以I开头,并且首字母大写如IDispose;const常量全部字母大写
7//字段名每个单词首字母小写
8
9//起名规范以及理解:
10//命名空间:公司+项目+包
11//类,属性,字段,结构体:名词或者名词性词组(因为描述的是一类实体或者实体属性或者数据),类代表对事物的抽象,他自身有自己的属性和行为,
12//例如人有自己的名字年龄等信息,同时能够说话,走路。结构体主要是对数据的一种组织。
13//方法,接口:动词或者动词词组(描述的是行为,即CAN-DO)
14
15//字段,方法,属性,类等的名字要充分表达出他们自己的功能,能够让代码阅读者不需要看注释就能够知道她的意思,
16//尽量不要缩写,毕竟无论名字多长编译器会帮助你做转化工作,当然也不要太长。呵呵,过尤不及么!
17//例如:数据库连接sqlConnectionString与mysqlConnectionString表达出他们是连接字符串,sqlConnection与mysqlConnection表达出他们是连接对象
18namespace CodeRule
19{
20 public class TestShow
21 {
22 //错误的习惯,不应该把内部字段暴露给其它对象,一是不符合规范,二是暴露实现细节
23 public string name;
24
25 //正确的习惯
26 private object aobject;
27 /// <summary>
28 /// 正确的方法,字段内部使用,其他对象只能通过属性来访问,不知道具体实现细节。当然如果属性是只有子类可见就应该把Public改为protected
29 /// 如果是只读的就应该把Set去掉,我们不应该把暴露扩大化。
30 /// </summary>
31 private string name; // private int justToCompare 该处也返回Name,同样的功能,不同的内部实现,相同的访问方法
32 public string Name // public string Name
33 { // {
34 get { return name; } // get{return justToCompare.ToString();}
35 set { name = value; } // set{justToCompare=Convert.ToInt32(value);}
36 } // }
37
38 //错误的习惯,既然通过属性可以进行Name的读写了,就不应该再提供方法对其的读写操作;二者可以选择其一,不过C#中主要通过属性,Java用方法的居多。
39 public string GetName()
40 {
41 return name;
42 }
43 public void SetName(string name)
44 {
45 return name = name;
46 }
47
48 //有的参数不能为空哪么就应该检查之,我们假设下面的aobject不能为空,哪么下面的习惯就是错误的,
49 //我们应该先检查aobject在它为空的时候做一些处理,然后再执行其它操作,对于属性也是如此
50 public void SetObject(object aobject)
51 {
52 this.aobject=aobject;
53 }
54 }
55}
56//其它:对于自定义集合类要实现IEnumerable接口,自定义事件以Handler结尾,自定义异常以Exception结尾,
57//要实现IDisposable接口,及时释放资源
本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名孙镜涛(包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言。