具有相似名称的另一个 class 属性的命名约定
Name convention for properties that are another class with a similar name
我确定之前有人问过这个问题,但我找不到任何相关答案 - 可能是因为我使用的术语的通用性。
我有一个 class - 我们称它为 Foo
。现在给定的 Foo
具有定义其性质的各种属性。为了便于讨论,我们称它们为Name
、Inactive
和Notes
。 Foo
也有很多变体,每个都是 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
上的 Inactive
和 Notes
字段是必须的,所以我不能像我想的那样使用 enum
。那么,我的困惑是,我无法为 TypeofFoo
和 FooType
找出一个合理的描述性名称。称它们为 TypeofFoo
和 FooType
很丑陋,而且将来容易混淆,所以我正在寻找替代方案。
是否有任何类型的命名约定可以涵盖这一点?
我会尝试使用多态来子类化 Foo
并使用带有枚举 FooType
的工厂来创建对象。您的 sub类 应该覆盖一般方法以添加特定行为。
但我认为上下文对于选择正确的模式很重要。在我看来,仅仅使用一个特殊的命名是令人困惑的,并不代表您对 类.
的意图
不,没有命名约定。事实上,.NET Framework 本身并不避免使用与其类型同名的属性,甚至 suggest it in some older guidelines:
这不是一个万无一失的解决方案,may cause confusion in certain edge cases like calling static members,但还不错,有理由断然避免它。
我确定之前有人问过这个问题,但我找不到任何相关答案 - 可能是因为我使用的术语的通用性。
我有一个 class - 我们称它为 Foo
。现在给定的 Foo
具有定义其性质的各种属性。为了便于讨论,我们称它们为Name
、Inactive
和Notes
。 Foo
也有很多变体,每个都是 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
上的 Inactive
和 Notes
字段是必须的,所以我不能像我想的那样使用 enum
。那么,我的困惑是,我无法为 TypeofFoo
和 FooType
找出一个合理的描述性名称。称它们为 TypeofFoo
和 FooType
很丑陋,而且将来容易混淆,所以我正在寻找替代方案。
是否有任何类型的命名约定可以涵盖这一点?
我会尝试使用多态来子类化 Foo
并使用带有枚举 FooType
的工厂来创建对象。您的 sub类 应该覆盖一般方法以添加特定行为。
但我认为上下文对于选择正确的模式很重要。在我看来,仅仅使用一个特殊的命名是令人困惑的,并不代表您对 类.
不,没有命名约定。事实上,.NET Framework 本身并不避免使用与其类型同名的属性,甚至 suggest it in some older guidelines:
这不是一个万无一失的解决方案,may cause confusion in certain edge cases like calling static members,但还不错,有理由断然避免它。