在包中分组类的约定

时间:2012-09-05 12:43:09

标签: java naming-conventions

我一直想知道哪种方法最好:

1)

包裹:cars.blue 课程:CarOne.javaCarTwo.java

包裹:cars.red 课程:CarOne.javaCarTwo.java

2)

包裹:cars.blue 课程:BlueCarOne.javaBlueCarTwo.java

包裹:cars.red 课程:RedCarOne.javaRedCarTwo.java

3)

包裹:cars

课程:BlueCarOne.javaBlueCarTwo.javaRedCarCone.javaRedCarTwo.java

方法1:将汽车类拆分为不同的包。

方法2:似乎有点过载,因为汽车类已经可以通过包来区分。但是当你只看一下类名时,前缀是一个优势,并且不需要第二次查看它来查看它所属的位置。

方法3:将所有车辆扔在一个包裹中。

哪种方法最好?

5 个答案:

答案 0 :(得分:4)

我会选择方法3.因为所有汽车都在同一个包中(所有域类都在一起)。有争议的问题,每个人都可能有自己的兴趣。除了基于用例的判断之外,AFAIK没有预先定义的约定。

答案 1 :(得分:2)

我认为这取决于你想要实现的目标,但是你应该记住那个包不仅仅是为了分组。但您也可以利用访问修饰符。

如果所有汽车类都应该使用某种方法,那么它们应该在一个包装中,因此药水3是好的。

package cars;  
public class BlueCarOne {
  void method() {}
}

package cars;

public class BlueCarTwo {
  void method() {}
}

package cars;

public class RedCarOne {
  void method() {}
}

package cars;

public class RedCarTwo {
  void method() {}
}

在这种情况下,只有cars包中的类才能调用method()

但是如果你想隐藏RedCarBlueCar之间的一些实现细节,请将它们放入不同的包中。并标记应隐藏为package protected的方法或字段。

干杯, 米甲

答案 2 :(得分:1)

可能你应该创建封装功能块的包。颜色的区别并不意味着任何功能差异,因此我也会选择选项3。

答案 3 :(得分:1)

方法1主要是当两个包互相排斥时,即在汽车有一个共同界面的情况下,红色和蓝色被编译成单独的JAR,并且只有一个这两个JAR一次出现。当两个软件包都存在时,这个命名就会令人困惑。

方法2和3几乎相同,因为名称彼此之间存在很大差异。创建一个单独的包(方法2)可能是也可能不是一种过度杀伤,这取决于你的应用程序中使用两组类的方式。

答案 4 :(得分:1)

否则我会使用model / pojo / domain包,例如:

package model;

class Car {
    private String carColor; //Blue, Red
    private String carType;  // One, Two

    // getter and setters

}