你怎么称呼这种反模式?

时间:2009-10-06 12:37:39

标签: anti-patterns

在数据库中,您有一个包含位字段的表格,请调用该字段有效

在应用程序中你有一个变量boolean,我们称之为 NotActive

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

NotActive = !mytable.active;

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

control.enabled = !mytable.Enable_yes_no

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

5 个答案:

答案 0 :(得分:12)

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

将变量命名为IsActive或Active,将其命名为NotActive double negation

编辑/澄清:

如果您需要检查事物是否有效,则需要双重否定:

If (!NotActive) { DoSomething() }

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

If (isActive) { DoSomething() }

答案 1 :(得分:6)

设计混淆?

答案 2 :(得分:3)

与现有数据库向后兼容?

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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