在不扩展任何内容的类中调用super()是不好的做法吗?

Qwe*_*rky 14 java inheritance

我经常看到人们明确地调用super()一个没有明确扩展任何东西的类.

public class Foo
{
  public Foo()
  {
    super();

    //do other constructor stuff
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我知道这是完全合法的,如果省略,编译器会添加调用,但我仍然认为这是不好的做法.每当我看到这个,我想知道程序员是否对继承有误解,以及所有类都隐式扩展的事实Object.

我应该将其添加到我们的编码标准/最佳实践中吗?当我看到他们这样做时,我是否应该将我团队中的其他开发人员拉出来?它是我个人的错误熊,但我不知道我是否只是挑剔.

Ber*_*t F 20

虽然我是一个一致的人,但我也反对微观管理每一种风格.拥有大量的编码约定,特别是当其中一些似乎是任意的时,是阻止人们遵循它们的一部分.我认为编码指南应该简化为提高功能的最有价值的实践.通过强制实施这一做法,可读性,可维护性,性能等提高了多少?

虽然我的个人做法是不要super()在这种情况下打电话,但是我认为它不够严重,我不会将其包含在编码指南中,或称其为审查其他程序员代码时的缺陷.然而,我仍会提及它,并在代码评论中讨论它(不是缺陷,只是作为一种风格问题),试图游说更多的工程师不要使用电话.


kgi*_*kis 9

添加不需要的代码始终是一种不好的做法.它会使代码的可读性降低,因为您需要停止并开始想知道为什么要添加这行代码以及实际存在的原因.


Jig*_*shi 6

它会暗中得到调用,所以没有必要做这个

  • 我不是在问我是否需要打电话,我在问这是不好的做法. (3认同)
  • @Qwerky`if(true == true){//是的,这是真的}`你会这样做吗? (2认同)
  • 我不是倒下的人,但我觉得OP已经在他的问题中指出了这些信息.问题不在于是否有必要(OP已经声明其暗示:`如果省略调用由编译器添加').问题在于它是否足以对其采取行动:增加编码指南并告诉其他开发者是一个缺陷. (2认同)