当前位置: 首页 > 面试题库 >

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

淳于恺
2023-03-14
问题内容

我经常看到人们super()在没有显式扩展任何内容的类中显式调用。

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

    //do other constructor stuff
  }
}

现在我知道这是完全合法的,并且如果省略了该调用,则编译器会添加该调用,但是我仍然认为它是不好的做法。每当我看到这一点时,我都会怀疑程序员是否对继承有某种误解,以及所有类都隐式扩展的事实Object

我应该将其添加到我们的编码标准/最佳实践中吗?当我看到其他开发人员这样做时,是否应该组建其他开发人员?它是我的个人小虫,但我不知道我是否只是在挑剔。


问题答案:

虽然我是一个全力以赴的人,但我也反对微观管理每一个样式。拥有大量的编码约定,尤其是在其中一些看起来有些随意的情况下,这是阻止人们遵循它们的一部分。我认为应该将编码准则简化为可改善-
ilities的最有价值的实践。通过强制执行此操作,可读性,可维护性,性能等有多少改进?

虽然我个人的做法是在这种情况下 不要
调用super()它,但它的严重性不足以至于我会将其包含在编码准则中,或者称其为审查其他程序员代码的缺陷。但是,我仍然会提及它,并在代码审查中讨论它(不是作为缺陷,只是作为样式问题),以试图游说更多的工程师以
使用该调用。



 类似资料:
  • 问题内容: 是否可以在ES6中扩展类而不用调用方法来调用父类? 编辑:这个问题可能会引起误解。 这是我们必须打电话的标准,还是我遗漏了一些东西? 例如: 当我不调用派生类时,我遇到了范围问题-> 我正在v2.3.0中使用iojs –harmony运行它 问题答案: ES2015(ES6)类的规则基本上可以归结为: 在子类构造函数中,只有在被调用之前才能使用。 ES6类构造函数必须是子类,否则必须调

  • 是否可以在ES6中扩展类而不调用方法来调用父类? 编辑:这个问题可能有误导性。这是我们必须调用的标准,还是我遗漏了什么? 例如: 当我不对派生类调用时,我遇到了一个作用域问题- 我用iojs在v2.3.0中运行这个

  • 问题内容: 我的问题如下。我应该避免在Angular应用程序中使用任何种类的jQuery代码,因为与DOM交互只有一件事是合法的。另一个问题是,是否有人遇到无法找到其他解决方案但只能用jQuery快速编写代码的问题。 谢谢! 问题答案: 是的,这是一个不好的做法,但是有时它可以为您节省很多时间,特别是在您寻找插件时,仅在必要时执行此操作,并在其他解决方案可用时记下备注以将其切换回原来的状态。

  • 问题内容: 在回答了有关如何使用强制释放Java中的对象(那个家伙正在清除1.5GB的HashMap)的问题后,有人告诉我手动调用是一种不好的做法,但是注释并不完全令人信服。此外,似乎没有人敢于赞成,也没有反对我的答案。 有人告诉我这是一种不好的做法,但是后来我又被告知,垃圾收集器的运行不再系统地停止世界,而且它也可以有效地被JVM用作提示,所以我有点不知所措。 我确实知道,JVM在需要回收内存时

  • 问题内容: 每位JS意见领袖都说,扩展本机对象是一种不良做法。但为什么?我们会获得出色的表现吗?他们是否担心有人会以“错误的方式”这样做,并向中添加可枚举的类型Object,实际上破坏了任何对象上的所有循环? 以TJ Holowaychuk的should.js为例。他向其中添加了一个简单的吸气剂,Object并且一切正常(源代码)。 这真的很有意义。例如,可以扩展。 是否有反对扩展本机类型的论点?

  • 我有一个DTO。 现在,我想使用SpringCloudConfig使其可配置。 在我的 文件中: 我的配置类: 现在我的DTO将会是: 在 Spring Boot 的 DTO 中包含 @Configuration 类是一种不好的做法吗?