Bra*_*man 11 java variables null ternary-operator
这是一种可接受的编码实践吗?
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
}
}
Run Code Online (Sandbox Code Playgroud)
或者我最好还是选择经典......
if (color != null) {
messageColor = color;
}
Run Code Online (Sandbox Code Playgroud)
Chr*_*dge 24
应限制使用?:运算符以使代码更具可读性.一个经典的例子:
a = sprintf( "There are %i green bottle%s on the wall.", i, (i==1?"":"s") );
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果将代码分成大约5个if/else行,代码将不太可读.
我通常在整个运算符周围放置括号,以便在读取它时我会将其作为单个值进行心理解析.
messageColor = (color != null ? color : messageColor);
Run Code Online (Sandbox Code Playgroud)
另一种变体是
messageColor = color || messageColor;
Run Code Online (Sandbox Code Playgroud)
在某些语言中,哪种语言将评估为"颜色,除非颜色评估为"false",在这种情况下,messageColor的值.在我看来,这应该避免,因为它可能会让人感到困惑.
最重要的是保持一致,以便下一个阅读代码的人(即使是你)具有最小的认知开销.
归档时间: |
|
查看次数: |
73625 次 |
最近记录: |