所以我有以下接口:在接口方法的布尔参数的接口中有常量是一种好习惯或代码异味?
public interface RoleService {
boolean INCLUDE_DEACTIVE_OBJECTS = true;
boolean EXCLUDE_DEACTIVE_OBJECTS = false;
Set<? extends BaseBusinessObject> getOwnedBusinessObjectsOf(final Employee employee, final boolean includeDeactiveObjects);
}
在上层
和某处,示例用法如下..
if (someCondition) {
ownedBusinessObjects = roleService.getOwnedBusinessObjectsOf(employee, RoleService.INCLUDE_DEACTIVE_OBJECTS);
} else {
ownedBusinessObjects = roleService.getOwnedBusinessObjectsOf(employee, RoleService.EXCLUDE_DEACTIVE_OBJECTS);
}
因此,而不是传递值如true
(或false
) ,我相信当我说INCLUDE_DEACTIVE_OBJECTS
时,阅读方法调用要容易得多。
但我不确定,这是否简直愚蠢?这是一种反模式还是代码味道或某种违反最佳做法的行为?
我认为这有点类似于避免Magic Numbers,但它是有用的,还是它相当混乱?
“语言不可知”标签的荣誉。目前在设计问题上很少见到这种情况。 – niksofteng