镜涛的家 JT
A NEW LIFE WITH YOU !
博客园
社区
首页
新随笔
联系
管理
订阅
随笔- 35 文章- 1 评论- 463
分享,讨论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接口,及时释放资源
希望大家可以共同分享编程的经验习惯,提高水平。谢谢!
Tag标签:
习惯
,
规范
,
命名
,
经验
posted @ 2008-04-24 11:42
镜涛
阅读(2357)
评论(32)
编辑
收藏
所属分类:
.NET
发表评论
回复
引用
查看
#1楼
2008-04-24 11:49 |
Inrie(洪晓军)
类的成员变量和局部变量的命名规范一样,似乎不是很好的做法: )
回复
引用
查看
#2楼
[
楼主
]2008-04-24 12:06 |
镜涛
@Inrie(洪晓军)
也有人说成员变量要用:_+pascal风格的方法来命名,不过我觉得不太习惯,呵呵,我把它当作局部变量风格。不知有没有什么好方法?
回复
引用
查看
#3楼
2008-04-24 12:18 |
neoragex2002
编码风格其实就跟word文档式样一样,无所谓美丑,关键是前后统一、组内统一。即可。成员变量加m_前缀区分亦可,老家伙们都看得懂。
回复
引用
查看
#4楼
2008-04-24 12:20 |
Tony Zhou
_name
回复
引用
查看
#5楼
[
楼主
]2008-04-24 12:31 |
镜涛
@neoragex2002
嗯,关键是统一。规范就是为了统一编码,规范是人订的,可以改,不过用得多了,用得久了就成为标准了。这就跟W3C出标准大家按标准来一样的道理。对比手机硬件和电脑硬件就知道标准的好处了!
回复
引用
查看
#6楼
2008-04-24 12:32 |
guys [未注册用户]
多写点..让像我一样的新人可以参考一下
回复
引用
查看
#7楼
2008-04-24 13:08 |
new 维生素C.net()
这是习惯吗?不同的公司有不同的规范.我觉得这没必要习惯.
像这样的:
public string name;
不叫习惯!
回复
引用
查看
#8楼
[
楼主
]2008-04-24 13:29 |
镜涛
@new 维生素C.net()
呵呵,是一种命名的规范,或者说风格。public string name;是pascal命名风格,虽然不同的公司有不同的标准,可是公司毕竟是小圈子,对于互联网的广大用户就没公司的约束了。
回复
引用
查看
#9楼
2008-04-24 13:34 |
王孟军!
good
回复
引用
查看
#10楼
2008-04-24 13:38 |
李战
完了,完了。这么看来,俺好多习惯都是错误的哦。
俺比较大大咧咧,人家问我叫啥名字,俺就直接说了:
public string name;
以后俺得含蓄点,得把名字当个人隐私,然后扭扭捏捏地说:
public string Name
{
get{return name;}
set{name = value;}
}
这样的话,俺还真不习惯。
唉,坏习惯怕是改不了了,就这样吧。又不是问美女的芳龄,无须遮遮掩掩。
回复
引用
查看
#11楼
2008-04-24 13:38 |
江大鱼
开始我也喜欢这种格式, 但是后来发现这种命名方式中的字段名容易和方法的参数名同名,所以现在都用m_的格式了
回复
引用
查看
#12楼
2008-04-24 13:41 |
生鱼片
不错
回复
引用
查看
#13楼
2008-04-24 14:45 |
Yannic Yang
现在都这么写 public string Name{get; set;}
呵呵
回复
引用
查看
#14楼
2008-04-24 16:07 |
任力
命名规范现在还没有一个统一的标准.
具体到公司里面可能也不同吧?公司内部人员为了更好的合作一般都有一个统一的标准,这个是很需要的
但公司与公司之间可能是不同的。
我们是定义的时候,成员变量就是_+pascal风格的,其它的倒差不多。
回复
引用
查看
#15楼
[
楼主
]2008-04-24 16:25 |
镜涛
@江大鱼
确实有的地方会有重复,这些还是自定义吧。赫赫,只要自己保持一致就行!
回复
引用
查看
#16楼
[
楼主
]2008-04-24 16:28 |
镜涛
@Yannic Yang
嗯,3.0的特性用起来还是很方便的,我觉得在这里用3.0不利于说明例子。呵呵
回复
引用
查看
#17楼
2008-04-24 16:37 |
初始小花
路过~~
回复
引用
查看
#18楼
2008-04-24 17:27 |
Anders Cui
--引用--------------------------------------------------
镜涛: @new 维生素C.net()
呵呵,是一种命名的规范,或者说风格。public string name;是pascal命名风格,虽然不同的公司有不同的标准,可是公司毕竟是小圈子,对于互联网的广大用户就没公司的约束了。
--------------------------------------------------------
这个应该属于camel命名风格 :)
回复
引用
查看
#19楼
2008-04-24 19:14 |
紫色阴影
项目组内统一就好了,没必要约束成某种,大家都觉得舒服就行
回复
引用
查看
#20楼
2008-04-24 21:56 |
Angel Lucifer
貌似Microsoft有个C#编码规范的文档吧。
我比较反感m_variable这样的camel命名方式。.NET的BCL里到处都可以见到这样的命名。我猜这些人大概都是从C++,尤其是VC系转过来的。o(∩_∩)o...
不知道怎么回事,就是心里不舒服,哈哈。
回复
引用
查看
#21楼
2008-04-24 22:43 |
土豆网电视剧 [未注册用户]
我还是的多卡看。这些代码提高下自己得了
回复
引用
查看
#22楼
2008-04-24 22:45 |
紫色阴影
我们的项目,测试都是这样命名should_throw_argument_exception_when_xxxx()。很多人也看不惯,但项目组内的人觉得可读直观,就行了
回复
引用
查看
#23楼
[
楼主
]2008-04-24 23:07 |
镜涛
@Angel Lucifer
恩,有个.NET设计规范。呵呵
回复
引用
查看
#24楼
[
楼主
]2008-04-24 23:09 |
镜涛
@紫色阴影
呵呵,还是那样。一致就好。
回复
引用
查看
#25楼
2008-04-24 23:44 |
HappyQQ
谢谢分享
感觉在哪本C++的编程规范上看到过
非常赞同楼主的观点
相比
public string strHistory来说,
我个人认为
get set 的好处 是,看以下伪码:
private string strhistory
public string StrHistory
{
get{
请输入你查看我个人档案的密码;
if (密码正确)
return strhistory;
else
return "黑客行劲,你的一切记录都已被记录";
}
set{
if (value 包含 “曾经杀人” 或者 一切坏的记录)
{
老兄,我没有那么坏吧,别把我的个人档案写得这么差喽
}
else strhistory= value;
}
}
回复
引用
查看
#26楼
[
楼主
]2008-04-24 23:46 |
镜涛
@HappyQQ
恩,赞同!我们既然决定要将自己的信息透漏给别人,就需要保证我们给出的信息是有意义的。
回复
引用
查看
#27楼
2008-04-25 00:50 |
没有昵称
字段与属性的区别竟然是大小写。。。
比较危险。
所以我比较习惯在camel格式的字段前面加下划线,虽然输入时不方便了点,不过安全。
回复
引用
查看
#28楼
2008-04-25 08:45 |
悍马
厉害呀。。
回复
引用
查看
#29楼
2008-04-25 09:11 |
Anthan
组织性的约定才是有效的
当然首先自己特定时期的风格一定要统一,不然自己都看不懂怎么好意思让别人看呢?
如果是企业内部,可以建议提供个工具来检查
回复
引用
查看
#30楼
2008-04-25 11:44 |
留恋星空
大家继续说下去
回复
引用
查看
#31楼
2008-04-25 17:06 |
Ylin Rain
一直坚持pascal+_camel结合的写法
回复
引用
查看
#32楼
2008-04-26 11:26 |
change [未注册用户]
@李战
封装字段的作用是为了便于对属性的访问权限进行控制,比如有些属性只让read不能wirte的,可以只提供get方法,set就可以不用提供,这样才是目的
社区
新闻
新用户注册
刷新评论列表
标题
姓名
主页
Email
(只有博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
另存
打印
所属分类的其他文章:
·
利用XML配置实体列表
·
扯淡设计模式之单件模式
·
一个用WCF实现Ruby中scaffold的想法
·
扯淡设计模式之装饰者模式
·
扯淡设计模式之观察者模式
·
分享,讨论Programming的习惯
·
多态的应用
·
解决Ajax中文乱码问题
·
动态构造Lambda表达式
·
关于软件开发---迭代开发
最新IT新闻:
·
Joost借道TOM在线 将正式进军中国
·
微软副总裁公开承认Vista存在问题
·
互联网DNS存在重大漏洞 黑客可能控制网络流量
·
Opera提出网络标准课程 发布标准教育倡议
·
SubSonic 2.1 版本发布
博客园新闻频道
博客园首页
社区
公告
QQ:307073463 Email:jingtaodeemail@qq.com MSN:sunjingtao@live.com
与我联系
发短消息
留言簿
给我留言
查看留言
我参加的小组
书籍推荐
Visual Studio
读书(Books)
web标准设计
.NET 3.x
设计模式
AJAX
求职招聘小组
博客园精华集出版小组
WinForms
我参与的团队
.NET 控件与组件开发(2/1329)
WCF技术研究团队(1/106)
asp.net开发团队(2/148)
框架设计团队(0/14)
随笔分类
(48)
.NET(12)
(rss)
AJAX(6)
(rss)
Game (1)
(rss)
Java(1)
(rss)
XML与XSLT(5)
(rss)
读书笔记(3)
(rss)
日常生活(9)
(rss)
数据结构与算法(1)
(rss)
项目开发(5)
(rss)
重构与模式(5)
(rss)
相册
ME
我的好友
冬冬
(rss)
IT的老大,我们的biang
小刚
(rss)
天天一起的哥们
最新随笔
1. 举国默哀三天
2. javascript继承的原理
3. Ajax-Request
4. “做”的“累”
5. Html元素动态添加方法
6. 书籍下载链接
7. 分享书籍之汗
8. Div+Css登陆窗体实现
9. 分享书籍
10. 利用XML配置实体列表
搜索
积分与排名
积分 - 69397
排名 - 530
最新评论
1. re: “做”的“累”
设计模式,先做好设计,挨着,一步步来,要不看看xp拥抱变化 也行,就是极限编程.....哈哈...放轻松点....慢慢体会乐趣.....
(林间曦阳)
2. re: “做”的“累”
设计模式,先做好设计,挨着,一步步来,要不看看xp拥抱变化 也行,就是极限编程.....哈哈...放轻松点....慢慢体会乐趣..... (林间曦阳)
3. re: 神界危机3.4通关方略
擦 真JB好过。。 打了5个小时还JB弄的满身是汗,, 够JB累的了。。 有那时间都能操次逼了。。 妈的 完人。。不学分身跟死亡之指根本过不去。。 要不得他吗的打上一天时间... (我中国人 找回公道)
4. re: 浅谈JSON和XML
第一个……悄悄的说不是json哦…… (棕熊)
5. re: 举国默哀三天
在通过css定制中写上:
body * {filter:gray} (天使の泪)
阅读排行榜
1. 神界危机3.4通关方略(2615)
2. 分享书籍(2546)
3. 知识的殿堂??!(2507)
4. 分享,讨论Programming的习惯(2357)
5. 解决Ajax中文乱码问题(2288)
评论排行榜
1. 分享书籍(162)
2. 知识的殿堂??!(57)
3. 分享,讨论Programming的习惯(32)
4. 书籍下载链接(24)
5. 扯淡设计模式之单件模式(23)