如何使用三元运算符缩短此代码?

问题描述:

我有下面这段代码如何使用三元运算符缩短此代码?

public class direction do(direction) 
    if(istrue) { 
     left = do(left); 
    } else { 
     right = do(right); 
    } 
} 

我想知道是否有无论如何缩短这个。我尝试使用三元运算符,但遇到了一些困难。建议?

+7

它已经不够短了吗?此外,这看起来不像有效的Java代码。 – MAK 2011-03-04 04:12:51

+0

缺少方法行中的括号。这是假设是一个while while循环吗? – Jim 2011-03-04 04:15:33

+3

你甚至可以使用'do'作为函数名吗? “方向”,“左”和“右”定义在哪里?为什么不只是发布整个示例而不是试图“简化”它。 – mellamokb 2011-03-04 04:16:24

如果团队中的其他程序员不介意,可以使用三元表达式。所以,如果你的例子是在有效的Java:

public void Do(Direction direction) 
{ 
    (istrue)? left = Do(left) : right = Do(right); 
} 

你可以省略大括号中if

public void Do(Direction direction) 
{ 
    if (istrue) 
     left = Do(left); 
    else 
     right = Do(right); 
} 

或者你甚至可以有一个衬垫:

public void Do(Direction d) { (istrue)? left = Do(left) : right = Do(right); } 

首先,选择一种清晰而不太聪明的风格。如果让代码更易于阅读和理解,请使用更多行。

一行程序一般都不会非常具有可读性,尽管在某些情况下,他们是有意义的(对我),特别是如果你有一个非常类似的小方法家属:

public String getFirstName()  { return first_name; } 
public String getLastName()   { return last_name; } 
public String getAddress1()   { return address1; } 
public String getAddress2()   { return address2; } 
public String getCity()    { return city; } 
public String getState()   { return state; } 
public String getZip()    { return zip; } 

在您的例子,有三元操作员没有明智的用途。

在Java中(以及其他类似C语言)三元运算符的值是一个三元运算表达式是表达,而如果语句是一个语句。表达式产生的价值,但声明不。如果您没有使用三元运算符表达式产生的值,那么您没有使用三元运算符的业务。只是不要这样做。

为了您的利益,这里有一个有效的使用三元运算符的例子:

int max(int x, int y) { 
    return x > y? x : y; 
} 

您的代码需要分配给取决于条件两个不同的变量(leftright)。三元表达式不会帮助你做到这一点,因为它不能用在任务的左侧。

这留下了(两个)任务的RHS。尽管理论上可以使用三元表达式,但它可能会使代码更长。

所以简单的答案是三元运算符不会帮助。