Oop 在类本身还是在类';建造师?
这是一种设计问题,我相信有人会用两种方式来解决。但在您看来,在类中还是在构造函数中指定变量更好?例如(无论是语法还是语言,这只是为了解释): 或 请忽略不同语言和语法的混合。。。哪一个更好?为什么?内联(第一个选项):Oop 在类本身还是在类';建造师?,oop,instantiation,variable-assignment,Oop,Instantiation,Variable Assignment,这是一种设计问题,我相信有人会用两种方式来解决。但在您看来,在类中还是在构造函数中指定变量更好?例如(无论是语法还是语言,这只是为了解释): 或 请忽略不同语言和语法的混合。。。哪一个更好?为什么?内联(第一个选项): 它更具可读性 您不必在每个构造函数中重复它 如果您的语言中有这样的东西,您可以使用初始值设定项块。它们看起来像构造函数,但不需要多次定义。在Java中,它们如下所示: { var1 = 5; varTime = now(); } 在中,倾向于: 在类本身中
- 它更具可读性
- 您不必在每个构造函数中重复它
- 如果您的语言中有这样的东西,您可以使用初始值设定项块。它们看起来像构造函数,但不需要多次定义。在Java中,它们如下所示:
{ var1 = 5; varTime = now(); }
- 在类本身中设置默认的常量值
- 以及依赖于构造函数中其他内容(如当前时间)的值
i、 例如,我倾向于使用这样的东西(合并您的两个示例):
但是我更喜欢的语言是PHP,它不允许我在类声明中设置非常量值,所以我的方法可能有点偏颇。这里的主要思想是在构造函数中为类输入任何启动或初始化代码。与此相反,从逻辑上讲,在析构函数中放入任何清理代码。从可测试性的角度来看,这两种方法都有问题。除了常数,您应该有一个接受这些作为参数的构造函数,或者一个允许您设置支持字段的属性。
通常,我会创建一个“完整”构造函数,它为您提供对类的完全控制,以及一个空/默认构造函数,它调用另一个指定默认参数的构造函数。这样,所有内容都在一个地方,我不必查看支持字段来了解构建时的情况。这实际上取决于您使用的语言。例如,在PHP中,只能在类中立即定义常量。但是,如果您希望实现跨语言兼容性,那么最好将值分配给构造函数中的所有类变量。所有建议似乎都是有效的。。。我假设没有标准实践?是的,
private readonly int TIME_STAMP=NOW()如果可能的话,代码>会更好,因为我喜欢常量/默认值和变量值之间的区别。我认为这是一个逻辑上的、有用的区别。readonly
关键字不是很明显吗?但是,正如Bozho所提到的,那么你必须在每个构造函数中重复TIME_STAMP=Now()代码。。。这是不必要的重复吗?或者由于设计原因而合理?(几乎)没有重复的代码是合理的,我在这里没有看到设计原因:)这就是我编写构造函数的方式。我唯一一次实例化某些东西是在我需要实例化以保证全局作用域时。@Bozho-初始化程序块比只将代码放入类中有什么好处(如我问题中的第一个选项)?根据首选项,它可能被认为更具可读性。
public class Example
{
private readonly int TIME_STAMP;
private int num;
public Example()
{
TIME_STAMP = Now();
num = 2;
}
}
{
var1 = 5;
varTime = now();
}
public class Example
{
private readonly int TIME_STAMP;
private int num = 2;
public Example()
{
TIME_STAMP = Now();
}
}