Car*_*arl 9 java coding-style conditional-operator
我有两个集合,以及根据是否满足某些条件而添加到这些集合中的一个或另一个集合的项目.
有点无意中,我偶然发现写作是合法的
(test(foo) ? cOne : cTheOther).add(foo);
Run Code Online (Sandbox Code Playgroud)
代替
if (test(foo)) {
cOne.add(foo);
} else {
cTheOther.add(foo);
}
Run Code Online (Sandbox Code Playgroud)
虽然第一个让我觉得聪明(总是加分),但我不确定长期可读性,可维护性等.我看到的基本优势是,如果我知道我总是会做同样的事情,它成为改变方法的一个位置(而不是两个,或者如果我通过条件运算符实现switch语句,可能很多).主要的缺点发生在不是这种情况时(即,我需要为某些情况而不是其他情况添加方法调用).
您看到两种方法(或其他解决方案)的优缺点是什么?
如果你不认为使用条件运算符设置哪个对象来调用方法的特定实例是正确的选择,是否存在合理的情况?
mat*_*t b 29
一个更简单的代码片段就是
SomeClass component = test(foo) ? cOne : cTheOther;
component.add(foo);
Run Code Online (Sandbox Code Playgroud)
换句话说,将分配与使用分开.