我有时会看到这样编写的代码:
public class B1
{
}
public class B2
{
private B1 b1;
public B1 B1
{
get { return b1; }
set { b1 = value; }
}
}
即,类B2具有名为“B1”的属性,该属性也是类型“B1”。
我的直觉告诉我这不是一个好主意,但是有没有技术上的原因为什么要避免给一个属性和它的类同名呢?
(我用的是.net 2.0,以防万一)。
9条答案
按热度按时间pvcm50d11#
很好。这里的典型例子是
这里出现了一些罕见的问题(极端情况),但还不足以保证避免使用这个设备。坦率地说,我觉得这个设备相当有用。我不会喜欢不能做到以下几点:
我不想说
Ticker StockTicker
或Ticker ThisTicker
等。yvfmudvl2#
Microsoft Naming Guideline for Members状态:
考虑为属性指定与其类型相同的名称。
当您具有枚举的强类型属性时,该属性的名称可以与枚举的名称相同。例如,如果您具有名为
CacheLevel
的枚举,则返回其值之一的属性也可以命名为CacheLevel
。虽然我承认有一点模糊,他们是否只是建议这对枚举或属性一般。
06odsfpq3#
我只能想到一个缺点。如果你想做这样的事情:
您必须改为用途:
这方面的一个很好的常见用法示例是在Winforms编程中,其中System.Windows.Forms.Cursor类与System.Windows.Forms.Forms.Cursor属性重叠,因此窗体事件必须使用完整的命名空间访问静态成员。
cbeh67ev4#
就在今天,埃里克在博客上发表了关于“颜色”问题的文章。
https://learn.microsoft.com/en-us/archive/blogs/ericlippert/color-color
就我个人而言,如果可能的话,我会避免。
juud5qan5#
另一个陷阱是内部类型。
我经常碰到这种情况:
v9tzhpje6#
这没有什么特别的技术问题。它可能会损害或提高可读性。事实上,一些微软库有这类属性(特别是
enum
属性,这通常是有意义的)。s4n0splo7#
这种常见模式是我在引用类中的示例成员时总是使用
this
的原因之一。而且从来没有
在大多数情况下,没有任何实际的歧义,但我发现它有助于澄清事情。另外,您现在知道属性/方法是在哪里定义的。
6za6bjd08#
当属性的名称和它的类型相同时,这显然会有点混乱,但除此之外,这并不是一个真正的问题。
如果名称有意义,通常最好让名称和类型相同,如果你能想到一个更好的名称,你当然应该使用它,但你不应该为了避免这种情况而不惜任何代价编造一个名称。
3okqufwl9#
除了大小写不同之外,我给予事物的名称与它们的类型相同:我的方法和属性都是小写的因此我就不会有MiffTheFox的问题。
因此,对于我来说,
m_b1
是成员数据,b1
是属性(或者局部变量或参数),B1
是类名。