通过滥用if语句中的三元条件调用条件方法?

Car*_*son 1 java ternary-operator

最近,我正在进行代码审查,并遇到了这个人:

if(!sharePermission.isExpired() ? activePermissions.add(sharePermission) : expiredPermissions.add(sharePermission));
Run Code Online (Sandbox Code Playgroud)

基本上,使用三元表达式来调用返回布尔值并将其包装在if(...)语句中的方法,以满足成为独立语句的要求。这是否比

if(!sharePermission.isExpired())
   activePermissions.add(sharePermission); 
else 
   expiredPermissions.add(sharePermission); 
Run Code Online (Sandbox Code Playgroud)

如果您真的需要将代码压缩为一行?当包裹在if(...)?中时,是否为从三元表达式返回的值分配了额外的空间?

我不喜欢他们两个,只是好奇。

And*_*ner 5

这样if做是对语句的滥用,不要介意条件表达式。

编写完整的if语句,或使用条件运算符选择要添加到的列表,会更清洁。

List<Permission> list = isExpired() ? expiredPermission : activePermission;
list.add(sharePermission);
Run Code Online (Sandbox Code Playgroud)