想象一下我创建了这个类:
public class ColoredPolygon
{
public Point[] Vertices { get; set; }
public Brush Brush { get; set; }
}
在 Visual Studio 中不难看出哪个“Brush”是类,哪个是属性。但是有件事告诉我,以属性的类命名并不是最佳实践。你会如何命名这个属性?
更新关于命名的另一个问题:你如何命名数组?用复数还是用单数?
想象一下我创建了这个类:
public class ColoredPolygon
{
public Point[] Vertices { get; set; }
public Brush Brush { get; set; }
}
在 Visual Studio 中不难看出哪个“Brush”是类,哪个是属性。但是有件事告诉我,以属性的类命名并不是最佳实践。你会如何命名这个属性?
更新关于命名的另一个问题:你如何命名数组?用复数还是用单数?
我会称之为Brush
。开发类库的设计指南实际上说:
考虑赋予属性与其类型相同的名称
(在关于命名类型成员的部分中)。声明后面的文本建议对 Enum 类型的属性执行此操作,但您可以在 .NET 框架中为其他类型的对象找到大量这种方法的示例,例如类的Brush
和Color
属性Pen
。
无需担心,如果Brush
是您的属性的描述性名称,您应该使用该名称,特别是因为它甚至会遵循您可以在框架中看到的命名模式。
FillBrush 是一个很好的描述性名称(我赞成),但老实说,在它真正成为一个真正的问题之前不要担心它。在你的情况下,它可能不是最好的名字,但如果它是最好的名字,我会保留它,直到上下文另有规定。我有几个例子,其中类名和属性名相同,但由于属性通常由变量名(或this.
)限定,所以我不太担心。
我发现以下内容非常易读:
var poly = new ColoredPolygon();
poly.Brush = Brushes.Green;
怎么样FillBrush
?
以及FillBrush
,在另一个答案中提到,您可能会考虑添加一种仅设置填充的方法Color
,这样用户就不必为了设置纯色填充而构建画笔。
关于 Fredrik 的建议(Brush Brush)以及 MS 的命名建议,您可以考虑为属性赋予与其类型相同的名称,但您不能总是这样做。例如,如果您Something
在一个类中定义了一个名为的公共枚举,那么该类也不能有一个名为 的属性Something
。
您可以拥有一个名为 的属性Brush
,大概是因为Brush
它在不同的命名空间/类中定义,然后编译器足够聪明,可以弄清楚Brush
您的意思。