如果陈述最佳做法

时间:2014-11-13 10:23:14

标签: java if-statement

考虑以下函数,该函数根据参数string str的值为i赋值。以下哪种情况是最佳做法,如果有的话:

public void myfunction(int i, bool condition)
{
    string str = "default";
    if(condition && i == 0) { str = "The value is 0"; }
    if(condition && i == 100) {str = "The value is 100"; }
}

public void myfunction(int i, bool condition)
{
    string str;
    if(condition && i == 0) 
    {
        str = "The value is 0";
    }
    else if(condition && i == 100)
    {
        str = "The value is 100";
    }
    else
    {
        str = "default";
    }
}

5 个答案:

答案 0 :(得分:3)

如何切换/案例陈述。类似......

public String myFunction(int i, boolean condition) {
    String str = "default";
    if (condition) {
        switch (i) {
            case 0:
                str = "The value is 0";
                break;
            case 100:
                str = "The value is 100";
                break;
            default:
                str = "default";
                break;
        }
    }
    return str;
}

答案 1 :(得分:1)

特别是在你的两个例子中,两者都没有客观上好。这是非常主观的。我认为第二个更具可读性。

但是,更好的方法是使用Map - >创建intString映射并使用它。

static Map<Integer, String> valueMap = new HashMap<Integer, String>();
static {
    valueMap.put(1, "The value is 0");
    ...
    valueMap.put(100, "The value is 100");
}

public void myfunction(int i, bool condition)
{
    string str = "default";
    if(condition) {
        str = valueMap.get(i);  // Also do checks if the value is not found etc.
    }
}

如果你的值确实类似于“value is i”,那么你应该使用int来构造值。 ("value is " + i

答案 2 :(得分:1)

如何使用switch语句?

public String myFunction(int i, boolean condition)
{
    String str = "";
    if (condition)
    {
        switch (i)
        {
            case 0:
                str = "The value is 0";
                break;
            case 100:
                str = "The value is 100";
                break;
            default:
                str = "default";
        }
    }
    return str;
}

答案 3 :(得分:0)

就我个人而言,我可以说两者之间没有太大区别,但取决于你的代码的上下文,例如(如果你必须为几个字符串测试那些条件......)但是肯定第二个vesion应该更好,因为如果(condition && i == 100),它会避免测试i==0

答案 4 :(得分:0)

两种款式都有各自的优点。第一个更短,(可能)更容易阅读,但第二个更容易调试:

if(condition && i == 0) 
{
    str = "The value is 0"; // You can put breakpoint here
}