如何用单位命名变量?

时间:2016-05-11 08:48:38

标签: java variables

示例:

public class Person {
    private String name;

    public String getName(){
        return name;
    }
}

这会导致类似String name = person.getName();的事情 这是直截了当的,我知道这是一个什么样的变量。

但是怎么样:

public class MovingObject{
    private int mass;

    public int getMass(){
        return mass;
    }
}

这会导致int massOfMovingobject = object.getMass();

问题:如何将代码添加到代码中,以便我真正知道我在处理什么?我应该将它命名为massInKg,即使它看起来不太好吗?一个想法是将它添加到文档中,但是当它是一个类中的全局变量时呢?

5 个答案:

答案 0 :(得分:3)

最简单的解决方案是将变量存储在一个单元中,该单元对于所有对象都是相同的,例如在Kilogram的情况下,然后添加方法来检索不同的单元:

public class MovingObject{
    private int mass; //in KG

    public int getMassinKG(){
        return mass;
    }
    public int getMassinPound(){
        //do the calculation
    }
}

答案 1 :(得分:2)

最好不要使用变量名中的单位,除非它们用于转换。

作为指导原则:

  • 在所有业务逻辑中,仅使用指标代码(或任何默认的标准单位系统)
  • 只有在向阅读友好文件显示内容或输出内容时,才能使用用户请求的单位并使用特定的转换功能(例如,在自制的课程中)。

所以在你的情况下,MovingObject应该使用'默认'单位系统,当你需要在GUI控件中显示它时,你可以说,例如。

SomeGuiControl.Value = UnitConverter.Kilo2Pounds(object.getMass());

答案 2 :(得分:1)

扩展Pooya建议的另一种方法,如果你想保持方法命名相同但使用参数来改变类型:

public class MovingObject{
    private int mass; //in KG
    private MassType defaultType;

    public int getMass(){
        return getMass(defaultType);
    }
    public int getMass(MassType type){
        switch(type){
            case Pound:
                //Do calc
                break;
            default:
                return mass;
        }
    }
}

public enum MassType{
    KG,
    Pound
}

答案 3 :(得分:0)

您可以单独返回数组而不是整数值。 你的数组将是这样的:

public HashMap getMass()
{
  Map<String, String> map = new HashMap<int, String>();
  map.put("mass", mass);
  map.put("unit", unit);
  return map;
}

答案 4 :(得分:0)

您可以构建一个群发对象,其中包含各种构造函数,可以容纳您需要的输入签名,然后提供计算对象单位转换的方法。

进一步扩展我们可以考虑动量和速度并创建一个牛顿对象。

单位转换是一个很好的基本例子,因为它在技术上是一个更加明智的转型。这里有一些代码。从@Pooya提供的开始。

public class MovingObject{
    private double mass; //in KG
    private double velocity; //in KG
    public MovingObject(){
        this.mass = 0;
        this.velocity = 0;
    }
    public double getMassinKG(){
        double mass = this.mass;
        return mass;
    }
    public double getVelocityKG(){
        double velocity = this.velocity;
        return velocity;
    }
    public void setMassinKG(double s){
        this.mass=s;
    }
    public void setVelocityKG(double s){
        this.velocity=s;
    }
    public String momentum(){
        return(String(this.mass*this.velocity)+"kg m/s");
    }
    public String massInPounds(){
       return(String(this.mass*2.20462)+"pounds");
    }
    public String massInKilograms(){
       return(String(this.mass)+"kilograms");
    }
    public String velocityInMetersPerSecond(){
       return(String(this.velocity)+"meters per second");
    }
    public String velocityInFeetPerSecond(){
       return(String(this.velocity*3.2808)+"feet per second");
    }
}

请注意这里有几件事。首先使用名称get的方法将返回数据存储为类的成员。 setter也是将更新的成员值作为参数的空白。最后,格式化输出的方法可以根据您的需要命名。

快乐编程:)