我有一个由数据库表支持的(Java)对象。在数据库中,(新)列中的值“N”表示禁止某些内容,而值“Y”或null(默认值)表示允许某些内容。
在我的对象中,我希望产生相同的效果:默认为forbidden = false
,但如果需要,可以将其设置为true
。我正在使用现有代码,所以我不想修改构造函数。
然而,该物业的使用方式可能是(我认为更容易理解)是积极的:isAllowed()/setAllowed()
。因此,我将代码设置为:
public boolean isAllowed()
{ return !this.forbidden; }
public void setAllowed(boolean allowed)
{ this.forbidden = ! allowed; }
if ([!]isAllowed()) {...}
比if ([!]isForbidden()) {...}
更容易理解
{{1}},还是我做出了错误的假设?谢谢。
答案 0 :(得分:3)
(1)是否有其他人认为
if ([!]isAllowed()) {...}
比if ([!]isForbidden()) {...}
更容易理解......
是。积极通常是要走的路。不总是,但通常。考虑一下代码想要分析是否允许 的情况:
if (something.isAllowed()) {
// do the thing
}
VS
if (!something.isForbidden()) {
// do the thing
}
第一个只是流畅地阅读更多。 (但这是主观的。)
只是FWIW,我可能会将数据成员保留为allowed
而不是forbidden
。所以你不会在访问器中反转它。因为上面的参数同样适用于直接使用字段的代码(假设你有代码),使用访问器代码。
(2)我的代码有意义吗?
除了支撑风格,是的。 :-)(风格只是风格,完全是你自己的决定。)
(3) - 我的主要问题:这种调整是否有传统的名称?
我从来没有听过,但它并不常见。我想你正在做一些模糊的外观或类似适配器的东西,但这是一个真正的延伸。 : - )
答案 1 :(得分:2)
它没有名称,它只是反转布尔值。
Wy不提供isAllowed
/ isForbidden
个访问者?哪个有意义取决于上下文,我没有任何理由明确 dis -allow使用上下文中最自然的东西。