具有相似名称的另一个 class 属性的命名约定

Name convention for properties that are another class with a similar name

我确定之前有人问过这个问题,但我找不到任何相关答案 - 可能是因为我使用的术语的通用性。

我有一个 class - 我们称它为 Foo。现在给定的 Foo 具有定义其性质的各种属性。为了便于讨论,我们称它们为NameInactiveNotesFoo 也有很多变体,每个都是 FooType,因为找不到更好的词了。

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

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; }
}

我知道这不是一个理想的情况。遗憾的是,FooType 上的 InactiveNotes 字段是必须的,所以我不能像我想的那样使用 enum。那么,我的困惑是,我无法为 TypeofFooFooType 找出一个合理的描述性名称。称它们为 TypeofFooFooType 很丑陋,而且将来容易混淆,所以我正在寻找替代方案。

是否有任何类型的命名约定可以涵盖这一点?

我会尝试使用多态来子类化 Foo 并使用带有枚举 FooType 的工厂来创建对象。您的 sub类 应该覆盖一般方法以添加特定行为。 但我认为上下文对于选择正确的模式很重要。在我看来,仅仅使用一个特殊的命名是令人困惑的,并不代表您对 类.

的意图

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

SolidBrush.Color

Control.Font

这不是一个万无一失的解决方案,may cause confusion in certain edge cases like calling static members,但还不错,有理由断然避免它。