我确信之前已经提出这个问题,但我找不到任何相关的答案 - 可能是因为我正在使用的术语的一般性质。
我有一个课程 - 让我们称之为Foo
。现在,给定的Foo
具有定义其性质的各种属性。为了论证,我们称之为Name
,Inactive
和Notes
。由于缺少更好的单词,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
上的Notes
和FooType
字段是必须的,所以我不能按照我的意愿使用enum
。那么,我的困惑在于,我无法找出TypeofFoo
和FooType
的合理描述性名称。称他们TypeofFoo
和FooType
是丑陋的,将来容易混淆,所以我正在寻找其他选择。
是否有任何类型的命名约定涵盖此内容?
答案 0 :(得分:3)
不,没有命名约定。实际上,.NET Framework本身并不避免使用与其类型具有相同名称的属性甚至suggest it in some older guidelines:
这不是一个万无一失的解决方案,may cause confusion in certain edge cases like calling static members,但并不是那么糟糕,以至于有理由明确地避免它。
答案 1 :(得分:0)
我会尝试将polymophy用于子类Foo
并使用带枚举FooType
的工厂来创建对象。您的子类应覆盖添加特定行为的常规方法。
但我认为上下文对于选择正确的模式非常重要。仅仅使用一个特殊的命名在我看来是令人困惑的,并不能代表你对这些课程的打算。