Variables 正在使用;是";命名布尔变量是一种糟糕的做法?
现在命名以“是”开头的布尔人是不是很糟糕?我的经理认为“isAnything”是过时的、糟糕的做法。这是真的吗Variables 正在使用;是";命名布尔变量是一种糟糕的做法?,variables,boolean,naming,Variables,Boolean,Naming,现在命名以“是”开头的布尔人是不是很糟糕?我的经理认为“isAnything”是过时的、糟糕的做法。这是真的吗 myManager.isLame ? correct() : incorrect(); 这是一个风格问题,我已经多次看到过(而且我自己也用多种语言来做)。 代码>伊斯兰()/代码>是很常见的,我认为它不是跛脚的。在Java中,它是JavaBeans规范的一部分,因此是一种非常隐蔽的实践。它在许多语言中都经常使用,但我不知道是否可以肯定它是首选方法 我认为一致性和给定团队中的每个人使用
myManager.isLame ? correct() : incorrect();
这是一个风格问题,我已经多次看到过(而且我自己也用多种语言来做)。 <代码>代码>伊斯兰()/代码>是很常见的,我认为它不是跛脚的。在Java中,它是JavaBeans规范的一部分,因此是一种非常隐蔽的实践。它在许多语言中都经常使用,但我不知道是否可以肯定它是首选方法
我认为一致性和给定团队中的每个人使用相同的标准/风格是需要记住的重要事项。我不会在这里使用任何硬性规则。虽然我发现像“Is”这样的前缀在识别布尔属性时很有用,但在很多情况下,“Is”并不是最佳选择
- 汽车轮胎漏气与汽车轮胎漏气
- 汽车被撞坏了vs汽车被撞坏了
- 等等
从风格上讲,我会投票支持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会助长不良做法。