2

在数据库中,您有一个带有位字段的表,我们将该字段称为Active

在应用程序中,您有一个布尔变量,我们称之为NotActive

每次从表中获取字段时,在应用程序中您都切换了变量的含义。

NotActive = !mytable.active;

另一个示例是数据库中名为Enable__yes__no的位字段,并且在您执行的代码中

control.enabled = !mytable.Enable_yes_no

最佳做法是保持相同的名称和相同的含义,但是上面的模式,你怎么称呼它?

4

5 回答 5

12

我不会用负前缀命名布尔变量。

将变量命名为 IsActive 或 Active,将其命名为 NotActive 是双重否定

编辑/澄清:

如果需要检查事物是否处于活动状态,则需要双重否定:

If (!NotActive) { DoSomething() }

正布尔变量名称更容易理解:

If (isActive) { DoSomething() }
于 2009-10-06T12:42:23.713 回答
6

设计混淆?

于 2009-10-06T12:39:18.190 回答
3

与现有数据库的向后兼容性?

于 2009-10-06T12:40:43.853 回答
1

它被广泛称为“非非负意大利面条混淆模式”,并于 1972 年首次被提及。;-) SCNR

于 2009-10-06T12:51:58.203 回答
0

我认为这里的问题在于架构,而不是数据的具体命名。例如,如果您使用实体框架,则此表的实体可以声明一个名为 InActive 的属性,并且可以使用 Active 列作为数据存储。就外界而言,来回翻译是透明的。

于 2009-10-06T12:42:20.773 回答