分享,讨论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表达出他们是连接对象
18
namespace 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表达出他们是连接对象18
namespace CodeRule19
{20
public class TestShow21
{22
//错误的习惯,不应该把内部字段暴露给其它对象,一是不符合规范,二是暴露实现细节23
public string name;24

25
//正确的习惯26
private object aobject;27
/// <summary>28
/// 正确的方法,字段内部使用,其他对象只能通过属性来访问,不知道具体实现细节。当然如果属性是只有子类可见就应该把Public改为protected29
/// 如果是只读的就应该把Set去掉,我们不应该把暴露扩大化。30
/// </summary>31
private string name; // private int justToCompare 该处也返回Name,同样的功能,不同的内部实现,相同的访问方法32
public string Name // public string Name33
{ // { 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 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名孙镜涛(包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言。


浙公网安备 33010602011771号