这是可接受的编码实践吗?
public class MessageFormat {
private static final Color DEFAULT_COLOR = Color.RED;
private Color messageColor = DEFAULT_COLOR;
public MessageFormat(Person person) {
Color color = person.getPreferredColor();
messageColor = (color != null) ? color : messageColor; // this line
}
}
还是我最好选择经典的...
if (color != null) {
messageColor = color;
}
最佳答案
应限制使用?:运算符以使代码更具可读性。一个经典的例子:
a = sprintf( "There are %i green bottle%s on the wall.", i, (i==1?"":"s") );
在这种情况下,如果将代码分成大约5条if/else行,则代码的可读性将降低。
我通常将括号括在整个运算符上,以便在阅读时可以从心理上将其解析为单个值。
messageColor = (color != null ? color : messageColor);
另一个变体是
messageColor = color || messageColor;
在某些语言中,哪一种颜色的计算结果为“颜色”,除非颜色的计算结果为“假”,在这种情况下为messageColor的值。
最重要的是保持一致,这样,下一个阅读您的代码的人(即使是您)也可以将认知开销降至最低。