在编写类时注释默认构造函数

时间:2016-10-20 17:41:05

标签: java constructor documentation comments default-constructor

在我的Java基础课中,我的老师告诉我,当我为一个类编写默认构造函数时,我会评论我做出的任意选择。 (她告诉我们必须为我们设计的每个类创建一个默认构造函数)例如,我正在编写一个名为RoomDimension的类,我创建了一个默认构造函数,如下所示:

public class RoomDimension {

    //Fields
    private double length;          //Length of a carpet
    private double width;           //Width of a carpet

/**
*
*/
public RoomDimension(){ 
        length = 0.0; 
        width = 0.0;
    }

我在这里使用0.0作为我的标志,表示用户没有输入任何内容或输入无效。我是否应该评论文档注释(/ ** /)中0.0用作无效输入的指示这一事实?我知道如果我使用-1作为我的标志(或默认构造函数中的字段初始化),我肯定会注释-1表示输入无效,因为我做出了任意决定。我问0是否必须被评论,因为我不知道0是否是任意选择。作为一名程序员,你会费心去表明吗?或者,如果我只是假设用户知道它而不告诉他们,这是否可以?

3 个答案:

答案 0 :(得分:0)

至于是否应该评论零,我认为最好指出它是一个标志,以便将来提醒自己,或任何其他程序员查看您的代码。

至于使用零作为标志,我认为当长度和高度小于或等于零时抛出异常会更好。将来读起来会更容易,并且当用户输入非正数时更有效率。

答案 1 :(得分:0)

  

她告诉我们,我们必须为每个类创建一个默认构造函数   我们设计

我告诉我的老师:谁不知道是在教学,谁知道在做什么!

如果您没有创建默认构造函数,编译器会执行此操作,您知道吗? - 老师怎么样?

生成,转换数据的许多工具如果找不到编译"默认构造函数"就会哭泣,唠叨,崩溃。但他们会完全忽略这些评论。

回到你的班级:

public class RoomDimension {

 static {
  System.out.println("I an a static initializer, If the classloader will touch your class, I will be called first! ex. RoomDimension.anyStaticmethod() or before new RoomDimension()");
 }

 {
  System.out.println("I am instance initializer. whenever you call any constructor, I will run before the constructor body, try me with: new RoomDimension()");
 }

 //Fields
 private double length; //Length of a carpet
 private double width; //Width of a carpet

 public RoomDimension() {
  length = 0.0;
  width = 0.0;
 }
}

顺便提一下你的代码:

public RoomDimension() {
  length = 0.0;
   width = 0.0;
 }

它完全没用,因为在构造函数之前,它将是一个初始化,并且将完全相同,因为你已经声明为属性,它们将在构造函数之前初始化:

 private double length; //Length of a carpet
 private double width; //Width of a carpet

如果您想知道它是否已初始化,请使用Double代替double并检查null值。

例如:

private Double length; //Length of a carpet
private Double width; //Width of a carpet

答案 2 :(得分:-1)

我会将那些值设置为可以为空。

    public class RoomDimension 
{
private double? length;
private double? width;

}

    public RoomDimension()
{  

}

这对您的作用是允许length和width的值取值null。因此,当您调用默认构造函数时,它们会自动设置为null。

这将帮助您开始考虑对象,因为当您拥有包含其他对象的对象时,您无法将所有包含的对象设置为0.0,您只需创建一个空对象。此外,当您对该对象执行操作时,您只需先检查其是否为null,这有助于避免空引用异常。