默认构造函数是善还是恶?Checkstyle和PMD在这里相反

yeg*_*256 12 java checkstyle pmd

Checkstyle说:

Class should define a constructor.
Run Code Online (Sandbox Code Playgroud)

PMD说:

Avoid unnecessary constructors - the compiler will generate these for you.
Run Code Online (Sandbox Code Playgroud)

谁是对的?或者让我们这样说吧 - 在课堂上有一个空的默认ctor有哪些优点和缺点?

Nat*_*hes 16

我喜欢PMD的答案.代码越少越好.不要编写编译器会为您编写的构造函数.

我的印象是编写构造函数的主要论点是,一些不了解构造函数如何在Java中工作的可怜的程序员可能会绊倒你的代码而感到困惑.我不喜欢编写不必要的代码,但我不喜欢编写愚蠢的代码.

但这是我的痴迷,可能是不合理的.有一个应用程序程序员的世界,其重点是业务,而不是语言,谁不是语言专家.许多人使用的生存技术是具有一致的风格,是否绝对必要不是重点.


DJC*_*rth 9

正如许多"有争议"的决定一样,事实是它确实无关紧要.编写构造函数或不编写.对代码质量和可维护性的影响可以忽略不计.如果您正在与他人一起编码,那么采用相同的风格来保持一致性,否则 - 根据您的意愿行事.


Dav*_*low 7

当默认构造函数是唯一的构造函数时,它是100%相当于用空体明确地写它或者省略它.但是,如果您有任何显式定义的构造函数,默认情况下,编译器将不会生成默认构造函数.这意味着如果您依赖编译器为您生成构造函数,并在以后添加替代构造函数,那么默认构造函数就会消失.就个人而言,无论如何,我倾向于让编译器完成这一代; 如果该默认构造函数正在使用中,它将生成编译警告,并且在此时很容易添加.否则,为什么要保持它?