属性的名称约定是另一个具有相似名称的类

时间:2015-02-17 20:36:02

标签: c# naming-conventions

我确信之前已经提出这个问题,但我找不到任何相关的答案 - 可能是因为我正在使用的术语的一般性质。

我有一个课程 - 让我们称之为Foo。现在,给定的Foo具有定义其性质的各种属性。为了论证,我们称之为NameInactiveNotes。由于缺少更好的单词,Foo也可能有很多种,每种都是FooType

因此,我们有以下类定义:

public class FooType
{
    public byte Id { get; set; }
    public string Name { get; set; }
    public bool Inactive { get; set; }
    public string Notes { get; set; }
}

public class Foo
{
    public Guid Id { get; set; }
    public FooType TypeOfFoo { get; set; }
    public string Name { get; set; }
    public bool Inactive { get; set; }
    public string Notes { get; set; }
}

我知道,这不是一个理想的情况。遗憾的是,Inactive上的NotesFooType字段是必须的,所以我不能按照我的意愿使用enum。那么,我的困惑在于,我无法找出TypeofFooFooType的合理描述性名称。称他们TypeofFooFooType是丑陋的,将来容易混淆,所以我正在寻找其他选择。

是否有任何类型的命名约定涵盖此内容?

2 个答案:

答案 0 :(得分:3)

不,没有命名约定。实际上,.NET Framework本身并不避免使用与其类型具有相同名称的属性甚至suggest it in some older guidelines

SolidBrush.Color

Control.Font

这不是一个万无一失的解决方案,may cause confusion in certain edge cases like calling static members,但并不是那么糟糕,以至于有理由明确地避免它。

答案 1 :(得分:0)

我会尝试将polymophy用于子类Foo并使用带枚举FooType的工厂来创建对象。您的子类应覆盖添加特定行为的常规方法。 但我认为上下文对于选择正确的模式非常重要。仅仅使用一个特殊的命名在我看来是令人困惑的,并不能代表你对这些课程的打算。