日期:2014-05-18  浏览次数:20991 次

讨论一下c#命名规则

发现很多开源的代码命名成员变量的时候,都是用下划线加名称,比如
class Wnd
{
private bool _isShowWnd = false;
private ResourceManager _resourceManager;
}
而绝少使用m_bShowWnd这样类型的c++命名规则。

不知为何?

------解决方案--------------------
bool _isShowWnd "bool"代表BOOL类型变量,is代表"是"的意思,
m_bShowWnd "m"代表成员变量,membe;b是"bool"的简写;这是匈牙利命名法.
用"bool _isShowWnd "是为了更明显表示.
------解决方案--------------------
c#似乎没有这种约定
很多情况下,用下划线表示类成员,去除下划线表示类属性.
比如你本来希望将Wnd类的ResourceManager成员设置成public,一般是这样写:
class Wnd 

private bool _isShowWnd = false; 

private ResourceManager _resourceManager; 
public ResourceManager resourceManager
{
get{ return _resourceManager; };
set{ _resourceManager = value; };
}


------解决方案--------------------
我比较喜欢“类库设计准则”(MSDN索引 类库设计准则 可找到)
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.chs/dv_fxdesignguide/html/fc076d66-9b5f-42d3-aa65-61d970c794a3.htm
------解决方案--------------------
http://www.cnblogs.com/jiangshaofen/archive/2007/04/16/715064.html
仅供参考.
------解决方案--------------------
C#主要是Pascal和 Camel两种命名法及其补充。下划线前缀一般用在与属性对应的私有字段的名字前面,
这是为了与一般私有字段相区分。
其实命名规范并不是金科玉律,在微软提供的代码中,都有不一致的代码风格。关键是在同一个项目重要统一,否则会带来沟通的问题。
------解决方案--------------------
m_bShowWnd 这种属于匈牙利命名法,好处是通过这个变量名称可以看到比如变量类型等诸多信息,
而在现代编辑工具中,你用鼠标指到一个变量上时,就会有许多提示,比如这个变量是局部变量啊,是什么类型的变量等,所以使用这么复杂而且可读性差的命名规则的必要性就不是太强了。
而C#主要使用PASCAL命名法和camel命名法,这两种命名法可读能较强。由于现代编辑工具的智能,在命名规则上提倡宁可名子起长一点,也尽量不用简写,因为名子长了能很清楚的看懂这个变量的意思,使程序的可读能增加了许多,而且有编辑工具的intellisense存在,也不用担心拼写错误。

建议楼主看一看<.Net 设计规范>这本书,这是Anders等微软.Net开发小组的人编写详述命名规范的一本书。