如何改善foll。 Java代码

时间:2011-01-26 05:57:32

标签: java

任何改善foll的方法。代码块:

public class MyUnits {
    public static String MILLSECONDS = "milliseconds";
    public static String SECONDS = "seconds";
    public static String MINUTES = "minutes";
    public static String HOURS = "hours";

    public int quantity;
    public String units;

    public MyUnits(int quantity, String units) {
        this.quantity = quantity;
        this.units = units;
    }

    public String toString() {
        return (quantity + " " + units);
    }

    // Test code
    public static void main(String[] args) {
        System.out.println(new MyUnits(1, MyUnits.MILLSECONDS));
        System.out.println(new MyUnits(2, MyUnits.SECONDS));
        System.out.println(new MyUnits(3, MyUnits.MINUTES));
        System.out.println(new MyUnits(4, MyUnits.HOURS));
    }
}

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:3)

静态整数应该是最终的。 Java中“常量”的常用修饰符是

public static final <Type> <name> = <value>;

更大的增强功能:将静态int与enum交换:

public enum Unit {MILLISECOND, SECOND, MINUTE, HOUR}

新的构造函数签名将是:

public MyUnits(int quantity, Unit unit) { ... }

MyUnit中的非静态字段应该是私有的。添加getter / setter方法以进行访问。

最后(仅限严肃的代码),我将测试代码与类分开。查看测试框架,例如junit并实现单独的测试类。

答案 1 :(得分:1)

  1. 标记您的public static个变量 作为final;更好的是,使用枚举。

  2. 不要让实例变量(quantityunits)为public。提供“getter”方法来读取它们的值。考虑提供“setter”方法来更改其值。这使得你的类不可变,这可以使它更容易使用(不可变对象的状态比可变对象的状态更可预测!)

  3. 更具体的代码是什么 打算这样做;然后做它 那。 (这也可以让你问 更具体的问题,哪些会 给你更好的答案。)

  4. 添加评论,尤其是javadoc comments

答案 2 :(得分:0)

在班级中使用enum

public enum MyUnit {
MILLSECONDS(1, "milliseconds"), SECOND(2, "seconds"),
MINUTES(3,"minutes"), HOURS(4, "hours");



private MyUnit(int quantity, String units) {
    this.quantity = quantity;
    this.units = units;
}

private int quantity;
private  String units;

public String toString() {
    return (quantity + " " + units);
}
    /*getters setters*/
}

然后就这样打电话

MyUnit.HOURS.getUnits();
MyUnit.HOURS.getCuantity();

答案 3 :(得分:0)

添加clone(),hashcode()和equals(),并实现Comparable,Serializable和Cloneable。

删除测试代码并将其移至测试类。使用JUnit进行测试。

写一个函数public Date addToDate(Date date)