Moe*_*sko 66 .net c# naming-conventions
我有时会看到这样编写的代码:
public class B1
{
}
public class B2
{
private B1 b1;
public B1 B1
{
get { return b1; }
set { b1 = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
即,B2类具有名为"B1"的属性,其也是"B1"类型.
我的直觉告诉我这不是一个好主意,但有什么技术原因可以避免给出与其类同名的财产吗?
(我正在使用.net 2.0,以防万一).
jas*_*son 61
没关系.这里的典型例子是
public Background {
public Color Color { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这里出现了罕见的问题(极端情况),但还不足以避免使用此设备.坦率地说,我发现这个设备非常有用.我不喜欢无法做到以下几点:
class Ticker { ... }
public StockQuote {
public Ticker Ticker { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我不想不得不说Ticker StockTicker还是Ticker ThisTicker等等.
Dan*_*plo 16
成员的Microsoft命名指南声明:
考虑给一个属性与其类型相同的属性.
当您具有强类型的枚举属性时,该属性的名称可以与枚举的名称相同.例如,如果您有一个名为枚举的枚举
CacheLevel,则还可以命名一个返回其值之一的属性CacheLevel.
虽然我承认他们是否只是为Enums或一般属性推荐这个有点含糊不清.
Mif*_*Fox 11
我只能想到一个缺点.如果你想做这样的事情:
public class B1
{
public static void MyFunc(){ ; }
}
public class B2
{
private B1 b1;
public B1 B1
{
get { return b1; }
set { b1 = value; }
}
public void Foo(){
B1.MyFunc();
}
}
Run Code Online (Sandbox Code Playgroud)
你必须改为使用:
MyNamespace.B1.MyFunc();
Run Code Online (Sandbox Code Playgroud)
一个很好的例子是在Winforms编程中常见的用法,其中System.Windows.Forms.Cursor类与System.Windows.Forms.Form.Cursor属性重叠,因此表单事件必须使用完整的命名空间访问静态成员.
就在今天,Eric在博客中谈到了"颜色"问题.
http://blogs.msdn.com/ericlippert/archive/2009/07/06/color-color.aspx
就个人而言,如果可能,我会尽量避免.
另一个问题是内部类型。
我一直遇到这个:
public class Car {
public enum Make {
Chevy,
Ford
};
// No good, need to pull Make out of the class or create
// a name that isn't exactly what you want
public Make Make {
get; set;
}
}
Run Code Online (Sandbox Code Playgroud)