你怎么称呼这种反模式?

Fre*_*dou 1 anti-patterns

在数据库中,您有一个带有位字段的表,让该字段调用Active

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

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

NotActive = !mytable.active;
Run Code Online (Sandbox Code Playgroud)

另一个例子是名为Enable__yes__no的数据库中的位字段以及您执行的代码

control.enabled = !mytable.Enable_yes_no
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*der 12

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

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

编辑/澄清:

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

If (!NotActive) { DoSomething() }
Run Code Online (Sandbox Code Playgroud)

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

If (isActive) { DoSomething() }
Run Code Online (Sandbox Code Playgroud)

  • NotActive不是一个双重否定,它只是一个否定.NotInactive将更接近双重否定. (5认同)
  • 只需重命名变量IsNotNotActive.现在逻辑又是积极的. (2认同)

小智 6

模糊设计?