c# - 构造函数应该有多少个变量?

标签 c# variables constructor limit

我意识到这是一个非常开放的问题,可能会得到各种各样的答案,但这里是。

使用 C#(或 Java,或任何 OO 语言)时,是否有一条通用规则规定应将多少变量传递到构造函数中?我传递给扩展类的构造函数的变量数量似乎失控了。

为了封装类的数据,我将成员声明为私有(private),在我的构造函数中初始化它们,并使用公共(public)访问器。

这是一个例子:

public class A
{
  private int var1;
  private int var2;
  private int var3;

  //3 variables passed in
  public A(int v1, int v2, int v3)
  {
    var1 = v1;
    var2 = v2;
    var3 = v3;
  }

  //Properties (accessors) here
}

public class B : A
{
  private int var4;
  private int var5;

  //5 variables passed in
  public B(int v1, int v2, int v3, int v4, int v5)
  : base(v1,v2,v3)
  {
    var4 = v4;
    var5 = v5;
  }

  //Properties (accessors) here
}

public class C : B
{
  private int var6;
  private int var7;

  //7 variables passed in !!!
  public C(int v1, int v2, int v3, int v4, int v5, int v6, int v7)
  : base(v1,v2,v3,v4,v5)
  {
    var6 = v6;
    var7 = v7;
  }

  //Properties (accessors) here
}

我的构造函数通常传入不同的对象,而不仅仅是整数。当我开始将 7 个变量传递给子类的构造函数时,我开始质疑我的设计,但我也很难找到一种不同的方法来做到这一点。

这被认为是糟糕的编程习惯吗?您应该传递给构造函数的变量数量是否有一般限制?

最佳答案

对我来说,正确答案是:

You should pass in as many variables as is required to setup the object in a state that is not invalid.

任何其他“选项”,我更愿意保留为属性,尤其是现在 C# 提供了对象初始值设定项。

关于c# - 构造函数应该有多少个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1434498/

相关文章:

javascript - 将 JavaScript 对象序列化为 JSON 字符串

c++ - 如何将我的函数更改为构造函数?

c# - 将带名称和不带名称的命名空间添加到 XElement

c# - .net CORS - 响应为 401 时丢失 Allow Origin header - 未授权

javascript - 为什么 JavaScript const 与 for in 循环配合得很好

java - 需要后续帮助/建议 ---Java BankAccount 应用程序 - 在通过 switch 语句的情况下重用变量

c# - 如何从 C# 中确定性地处理托管 C++/CLI 对象?

c# - 将参数传递给 NUnit 测试

多个元素上的 jQuery 可变高度不起作用

javascript - 在初始化 Javascript 时执行的私有(private)函数中设置公共(public)属性