【发布时间】:2016-01-06 23:21:03
【问题描述】:
可以有两种类型的组 - 私人和公共。每个组都可以有成员。我有三个参数 id、includePrivate、includePublic 要传递到一个方法中,以根据以下规则返回组。 例如。
public List<Group> getListofGroups(String id, Boolean isPrivate, Boolean isPublic){}
- 所有组{}
- 所有私有组 {"includePrivate": true}
- 所有公共组 {"includePublic": true}
- 所有具有成员资格的私有组 {"id":"id1", "includePrivate": true }
- 所有具有成员资格的私有群组 + 所有公共群组 {"id":"id1", "includePrivate": true, "includePublic": true }
实现这种复杂的 if/else 逻辑的最佳方法是什么?只为这个 api 创建一个规则引擎是一个不错的选择吗?
For eg. if(isPrivate && isPublic && id=!null) {
return publicAndPrivateWIthMembership();
} else if(isPrivate && id=!null ) {
return privateGroupsWithMembership();
} else if((isPublic && !isPrivate) ||(isPublic && isPrivate == null) ) {
return allPublicGroups();
} else if((isPrivate && !isPublic) ||(isPrivate && isPublic == null) ) {
return allPrivateGroups();
}........
【问题讨论】:
-
很不清楚你在问什么,但它看起来并不那么复杂。你试过把它写成几个 if/else 语句吗?
-
我现在为这个问题添加了一些上下文。此外,这些变量中的每一个也可以为空,这会带来复杂性。
-
@MegashyamSandeepV 请更新您问题中的代码,使其更具可读性。
-
id=!null不是有效的 java。我怀疑你的意思是id!=null。 -
是的@AndyTurner。我现在更正了。
标签: java if-statement rule-engine