Variables 正在使用;是";命名布尔变量是一种糟糕的做法?

Variables 正在使用;是";命名布尔变量是一种糟糕的做法?,variables,boolean,naming,Variables,Boolean,Naming,现在命名以“是”开头的布尔人是不是很糟糕?我的经理认为“isAnything”是过时的、糟糕的做法。这是真的吗 myManager.isLame ? correct() : incorrect(); 这是一个风格问题,我已经多次看到过(而且我自己也用多种语言来做)。 代码>伊斯兰()/代码>是很常见的,我认为它不是跛脚的。在Java中,它是JavaBeans规范的一部分,因此是一种非常隐蔽的实践。它在许多语言中都经常使用,但我不知道是否可以肯定它是首选方法 我认为一致性和给定团队中的每个人使用

现在命名以“是”开头的布尔人是不是很糟糕?我的经理认为“isAnything”是过时的、糟糕的做法。这是真的吗

myManager.isLame ? correct() : incorrect();

这是一个风格问题,我已经多次看到过(而且我自己也用多种语言来做)。

<代码>代码>伊斯兰()/代码>是很常见的,我认为它不是跛脚的。在Java中,它是JavaBeans规范的一部分,因此是一种非常隐蔽的实践。

它在许多语言中都经常使用,但我不知道是否可以肯定它是首选方法


我认为一致性和给定团队中的每个人使用相同的标准/风格是需要记住的重要事项。

我不会在这里使用任何硬性规则。虽然我发现像“Is”这样的前缀在识别布尔属性时很有用,但在很多情况下,“Is”并不是最佳选择

  • 汽车轮胎漏气与汽车轮胎漏气
  • 汽车被撞坏了vs汽车被撞坏了
  • 等等
这些建议包括以下相关建议

请使用肯定短语命名布尔属性(改为CanSeek) 坎特西克的)。(可选)还可以使用前缀作为布尔属性的前缀 是、可以或已经,但仅在它增加价值的地方


从风格上讲,我会投票支持hasValue或isNullOrEmpty。然而,使用聪明的快捷方式或一行if语句,这样的语句通常是不好的。它大大降低了代码的可读性,并且在大多数语言中不会带来任何性能提升。

如果您创建具有清晰名称的布尔变量,效果会更好

boolean lame;
并制作方法对其值进行校验

isLame(){
  return lame;
}

调用方法通常比直接访问变量更好。

遵循语言的文档约定。如果没有公约:

完全忽略变量命名中的类型信息

这包括布尔值的

boss.lame?跛行():冲刺()

对于具有强类型的语言,信息是多余的

对于没有强类型的语言,信息仍然是多余的,因为IDE和所有可用的各种工具现在都可以帮助进行类型化,而不必对名称进行纠结

是一个动词
is_lame()
应该是返回布尔值的访问器方法。

根据

8.[必须]在定义布尔变量时,不要添加'is'作为前缀,因为它可能会在某些Java框架中导致序列化异常


反例:布尔isSuccess;方法名为issucess(),然后RPC framework将变量名推断为“success”,这会导致序列化错误,因为它找不到正确的属性。

使用哪种语言?例如,在Java中,对布尔属性使用“is”是最好的方法。我同意你的经理是个蹩脚的人。我一直在使用它,从来没有人对我说过任何话。
isLame()
看起来像一个方法,而不是一个变量;-)对于变量,我很少使用
is
前缀。然而,在一个公开的方法或访问器上,名称中的“是”可以增加值——如果它确实增加了值,那么我认为它是有保证的。(但是,我发现完全可以根据给定名称的值省略“is”或使用其他生成器,如“has”),我使用
is_lame
has_something
我完全同意团队标准的概念。也许如果我的经理一开始就这么说,我就不会发布这个问题了。使用三元if没有什么错。这与问题无关。在我的公司里,我们都反对那些一句话。然后一个新人加入了我们的团队,他总是用那种东西。一旦我们都习惯了,它实际上更容易阅读。当然,你不应该让你的表达过于复杂。但是,使用漂亮的快捷方式来保持代码的简短和干净,可以大大提高可读性。特别是C#在过去几年里发展了很多。你应该及时更新所有新的快捷方式,否则你将无法在10年内阅读代码。(我没有告诉任何人使用所有新的快捷方式。但你应该知道它们。)在这种情况下,你能将变量设置为公共只读权限吗?你怎么称呼它?同意。汽车不是轮胎。@LoveRight“IsFlatTyred”怎么办?@Dai“Tyred”似乎是个动词。没有说它可以是动词。即使我的字典是错的,这种用法对非英语使用者来说也是罕见的和不友好的。为什么我们不使用一种更简单的语法,
HasFlatTyre
isanytyredaflated
JavaBean约定在引用布尔字段时使用
is
代替
get
。有相当多的库是基于JavaBeans约定的。JavaBean会助长不良做法。