Java平均构造函数长度

时间:2013-11-17 11:40:56

标签: java oop constructor coding-style

很抱歉在这里发布了一个相当模糊的问题 - 但我一直在努力寻找这个问题的明确答案 - 也许没有,但只是想问一下开发者。

上周,我的一位同事提到构造函数的长度(一般来说是Java和OOP)应该保持在最低限度。虽然我确实同意这种方法,但他继续说它应该只有几行 - 最多3-4行。

我不确定他是如何得出这个数字的,我想知道这种方法有多么有用。如果要执行一些复杂的初始化,那么构造函数将超出该限制。 您可以将代码拆分和分解并重构为较小的函数,直到母牛回家为止,我更喜欢将相关代码保存到一个方法中,并避免不必要的函数,因为它使代码更具可读性。 这有时会导致构造函数相当适中的情况 - 在最坏的情况下会有50-100行代码,但是即使我将其分解为函数,从技术上讲,该代码仍然被称为“初始化的一部分” 。因此,100行代码可能被单个函数调用替换,但是在调用函数时仍会调用100行代码? 我还查看了检查类型的默认定义,它的默认构造函数长度设置为150,这听起来更合理“比几行代码”。

很想知道你们遵循的经验是什么,或者确实存在这样一个被接受的限制。

3 个答案:

答案 0 :(得分:2)

良好的经验法则是,任何方法(或构造函数)都应该适合IDE中的一个屏幕,这样当您尝试阅读并理解此方法的作用时,您不必向下滚动(因此它提高可读性)。

没有什么可以阻止你不时地做出异常,但你通常应该把很长的方法拆分成较小的块,因为我已经看到几百行的方法,当我不得不改变代码时它真的让我哭了

答案 1 :(得分:1)

  

我一直在努力寻找这个问题的明确答案 - 也许没有

你是对的。没有确定的答案。这是主观的。

  

很想知道你们遵循的经验是什么......

我没有。我根据具体情况判断我的判断。主观。

  

......或者确实存在这样的接受限制。

没有。您不会在主流Java编码标准中找到任何指定的限制。一个不错的编码标准将不会对此进行规定,因为它会适得其反。

另一方面,这是代码审查可能有益的情况。如果您看到“过长”的构造函数或方法,则值得指出,尤其是,如果有可用的良好重构;即你的同事会同意提高可读性。

答案 2 :(得分:1)

这只是一种常见做法,但不是任何事情。我已经在构造函数中创建了很多代码。我也有没有构造函数的类。如上所述,没有这样的事情你不应该在构造函数中包含很多代码,JVM也会加载它们。

为什么会出现这个概念呢?这是因为人们认为构造函数用于初始化对象中的变量,因为只有在创建新实例时才会调用它们。在构造函数中做很多工作也没有使用OOP原则。 OOP本身意味着'面向对象的编程',它意味着将代码构造为对象。所以我把结论留给你了。看看这两个例子并考虑哪一个更好。

示例1:

public Dog(String name)
{
    System.out.println("Dog " + name + ": Bark!Bark!");
}

示例2:

public Dog(String name)
{
    this.name = name;
}

public void bark()
{
    System.out.println("Dog " + name + ": Bark!Bark!");
}

在第一个例子中,狗只吠叫一次,但在第二个例子中,你可以根据需要多次吠叫。出于同样的原因,他们说只使用构造函数来初始化值。

希望这有帮助。