使用继承作为命名约定

时间:2017-11-01 15:00:57

标签: c# inheritance naming-conventions conventions

我想知道继承的用例。具体来说,我有一个C#的情况,我有一个Axis类,你可以给这个类一个字符串名称,以及其他属性。因此,您可以编写(新轴(“X”))来创建名为X的轴。

因为通常你想要创建X,Y和Z轴,我觉得有意创建三个名为X,Y和Z的Axis子类,每个子类在构造函数中指定Axis名称是什么。

目前Axis类中没有很多代码,因此代码重用非常少(当然可能会改变)。公平地说,编写(新轴(“X”))而不是(新X())也没那么麻烦。

无论如何,我想知道的是编写这样的代码是否有任何不利之处,或者如果这样做是不常见的做法。很有责任!

3 个答案:

答案 0 :(得分:0)

像Damien所提到的那样,如果只是为了让它们更简单,那么创建它们的帮助方法/属性可能更好。

public class Axis
{
    public Axis(string name)
    {
        Name = name;
    }

    public string Name { get; }

    public static Axis X { get; } = new Axis("X");

    public static Axis CreateX() => new Axis("X");
}

如果您有属性,则需要确保Axis是不可变的。您可以随时在房产中返回一个新房产,但这不是房产应该做的事情。

答案 1 :(得分:0)

Imo取决于您对此值的处理方式:

  • 使用它作为标题:我可以想象一个图形(你在创建图形吗?),用x轴代表时间。这里的string构造函数参数非常合适,即使您决定总是命名x轴" X"。
  • 使用它来识别轴:如果代码的其他部分主动寻找"X" - 轴,您可能想要使用枚举,即AxisType.X
  • 没有:如果应用程序不依赖于此值,也许您可​​以使用"匿名轴"相反,并省略参数?

除非每个子类与其他子类具有不同的行为,否则我不会创建子类。

答案 2 :(得分:0)

请考虑以下事项。

  1. 通常会考虑使用x和y的变量名称的不良做法。这样的名字让其他开发人员无法洞察变量及其使用的本质。同样的原则也应该用在类命名上。创建名为x和y的子类不是非常有用的名称。我会依靠像xAxis和yAxis这样的名字来帮助提供清晰度。
  2. 您的XYZ坐标是否具有不同的属性,或者是否会通过专门针对每种类型的不同方法调用?如果不是为什么使用不同的类型。子类不等同或可互换。因此,您计划使用它们可互换的任何地方都可以引用任何基类,或者在代码中有多个版本来处理每种类型。
  3. 如果你只是试图缩短课程的实例,我会提醒你,除非你受到某种尺寸限制。