您使用什么约定来命名类操作?
3 回答
全文文档:下载 C# 编码标准和最佳实践
命名约定和标准
注意:本文档通篇使用术语 Pascal 套管和 Camel 套管。Pascal 大小写 - 所有单词的第一个字符是大写,其他字符是小写。示例:BackColor Camel Casing - 所有单词的第一个字符,除了第一个单词为大写,其他字符为小写。示例:背景颜色
对类名使用 Pascal 大小写
公共类 HelloWorld { ... }
对方法名称使用 Pascal 大小写
无效 SayHello(字符串名称) { ... }
对变量和方法参数使用 Camel 大小写
整数总数 = 0;void SayHello(string name) { string fullMessage = "Hello " + name; ... }
对接口使用前缀“I”和 Camel Casing(示例:IEntity)
不要使用匈牙利符号来命名变量。
在早期,大多数程序员都喜欢它——将数据类型作为变量名的前缀并使用 m_ 作为成员变量的前缀。例如:
字符串 m_sName; 诠释年龄;
但是,在 .NET 编码标准中,不建议这样做。不应使用数据类型和 m_ 来表示成员变量。所有变量都应使用骆驼套管。
一些程序员仍然喜欢使用前缀 m_ 来表示成员变量,因为没有其他简单的方法来识别成员变量。
- 使用有意义的描述性词语来命名变量。不要使用缩写。
好的:
string address
int salary
不好:
string nam
string addr
int sal
- 不要使用 i、n、s 等单字符变量名称。使用 index、temp 等名称
在这种情况下,一个例外是用于循环中的迭代的变量:
for ( int i = 0; i < count; i++ )
{
...
}
如果该变量仅用作迭代的计数器并且没有在循环中的其他任何地方使用,那么许多人仍然喜欢使用单个 char 变量 (i) 而不是发明一个不同的合适名称。
不要将下划线 (_) 用于局部变量名称。
所有成员变量都必须以下划线 (_) 为前缀,以便可以从其他局部变量中识别它们。
不要使用类似于关键字的变量名称。
使用“is”或类似前缀为布尔变量、属性和方法添加前缀。
例如:私有布尔 _isFinished
- 命名空间名称应遵循标准模式
...
- 为 UI 元素使用适当的前缀,以便您可以从其余变量中识别它们。
这里推荐了 2 种不同的方法。
一种。为所有 UI 元素使用通用前缀 (ui_)。这将帮助您将所有 UI 元素组合在一起,并且可以从智能感知轻松访问所有这些元素。
湾。为每个 ui 元素使用适当的前缀。下面给出了一个简短的列表。由于 .NET 提供了多个控件,因此您可能必须为您正在使用的每个控件(包括第三方控件)提供完整的标准前缀列表。
Control Prefix
Label lbl
TextBox txt
DataGrid dtg
Button btn
ImageButton imb
Hyperlink hlk
DropDownList ddl
ListBox lst
DataList dtl
Repeater rep
Checkbox chk
CheckBoxList cbl
RadioButton rdo
RadioButtonList rbl
Image img
Panel pnl
PlaceHolder phd
Table tbl
Validators val
- 文件名应与类名匹配。
例如,对于 HelloWorld 类,文件名应为 helloworld.cs(或 helloworld.vb)
文件名使用 Pascal 大小写。
缩进和间距
使用 TAB 进行缩进。不要使用空格。将选项卡大小定义为 4。
注释应与代码处于同一级别(使用相同级别的缩进)。
好的:
// Format a message and display
string fullMessage = "Hello " + name;
DateTime currentTime = DateTime.Now;
string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();
MessageBox.Show ( message );
不好:
// Format a message and display
string fullMessage = "Hello " + name;
DateTime currentTime = DateTime.Now;
string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();
MessageBox.Show ( message );
花括号 ( {} ) 应与花括号外的代码处于同一级别。
使用一个空行来分隔代码的逻辑组。
好的:
bool SayHello ( string name )
{
string fullMessage = "Hello " + name;
DateTime currentTime = DateTime.Now;
string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();
MessageBox.Show ( message );
if ( ... )
{
// Do something
// ...
return false;
}
return true;
}
不好:
bool SayHello (string name)
{
string fullMessage = "Hello " + name;
DateTime currentTime = DateTime.Now;
string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();
MessageBox.Show ( message );
if ( ... )
{
// Do something
// ...
return false;
}
return true;
}
类中的每个方法之间应该有一个且只有一个空行。
花括号应该在单独的一行,而不是在同一行,如 if、for 等。
好的:
if ( ... )
{
// Do something
}
不好:
if ( ... ) {
// Do something
}
- 在每个运算符和括号前后使用一个空格。
好的:
if ( showResult == true )
{
for ( int i = 0; i < 10; i++ )
{
//
}
}
不好:
if(showResult==true)
{
for(int i= 0;i<10;i++)
{
//
}
}
使用#region 将相关的代码段组合在一起。如果您使用#region 使用正确的分组,当所有定义都被折叠时页面应该是这样的。
将私有成员变量、属性和方法保留在文件的顶部,将公共成员保留在底部。
我发现使用与您工作的语言和框架相同的命名约定可以让每个人的生活更轻松。
例如,.Net 有一个约定。为你的语言所做的建模,你的代码和库的“用户”会更快乐。所以,答案可能是,这取决于你的语言和/或平台......
命名约定是一个有争议的话题,因为它是任意的区分。
上面的两个答案都很好。我的补充是这样的:
你的目标是可读性。您的代码讲述了一个故事,尽管有时有点无聊。确保故事清晰。
如需更多乐趣,请参阅以下链接:
http://www.joelonsoftware.com/articles/Wrong.html
http://en.wikipedia.org/wiki/Naming_convention_%28programming%29