属性名不让用 is 开头,应该用什么?

2021-11-26 14:31:32 +08:00
 7911364440
8540 次点击
所在节点    Java
74 条回复
lyz1990
2021-11-26 17:03:54 +08:00
为啥不能 is ?
h82258652
2021-11-26 17:13:32 +08:00
shifouVisible
手动狗头
PerFectTime
2021-11-26 17:15:46 +08:00
凭什么
jinhan13789991
2021-11-26 17:15:54 +08:00
换成 if 开头
isVisiable => ifVisiable
isSelected => ifSelected
meeop
2021-11-26 17:17:22 +08:00
感觉 are 最万能
不能用 selected 的原因:不是所有布尔变量都是一种状态 /动作,比如 isVip,变量名叫 vip 就很模糊
不能用 has,can 的原因,不是所有布尔都在表达是否拥有 /能否的含义,例子同 isVip

中文含义是否 xxx 最万能
对应到英文就是 isXxx
坑爹的事 java 规范里会自作聪明的把 isxxx 认为是布尔值,生成 getter 方法的时候去掉 is
那只能用 are 了
jk1030
2021-11-26 17:20:07 +08:00
我一般是用 FLag
poorcai
2021-11-26 17:30:07 +08:00
@kujio #5 你确定这样命名是合法的吗?
vate32
2021-11-26 17:36:56 +08:00
不明白为什么不让用的老哥可以看下这篇文章: https://www.cnkirito.moe/project-rules-2/
yuezk
2021-11-26 17:38:10 +08:00
@poorcai #47 个人推荐 #5 ,感觉添加 is 有点冗余。visible 和 selected 本身就有两个状态。类比中文就是:「可见的」和「是可见的」「已选中的」和「是已选中的」,把「是」去掉问题也不影响理解。
pkoukk
2021-11-26 17:44:57 +08:00
一看标题就知道是坑爹的 java 。。
其它哪个语言都没这奇怪的毛病
maocat
2021-11-26 18:18:13 +08:00
notIs 负负得正
TomVista
2021-11-26 19:21:52 +08:00
美食供应商
TomVista
2021-11-26 19:22:17 +08:00
@TomVista 抱歉,请忽视这条
ttys001
2021-11-26 19:29:36 +08:00
beVisible
beDeleted
galikeoy
2021-11-26 22:56:08 +08:00
@jmjgeminix #22 血压上来了
JamesR
2021-11-26 23:41:20 +08:00
只有 Java 才有这个问题。
moqimoqide
2021-11-27 01:23:27 +08:00
布尔值命名


给布尔变量赋子隐含“真 /假”含义的名宇

像 done 和 success 这样的名字是很不错的布尔变量名,因为其状态要么是 true ,要么足 false:某件事情完成了或者没有完成:成功或者失败。另一方面,像 status 和 sourceFile 这样的名字却是很糟的布尔变量名,因为它们没有明确的 true 或者 false 。status 是 true 反映的是什么含义?它表明某件事情拥有一个状态吗?每件事都有状态。true 表明某件事情的状态是 OK 吗?或者说 false 表明没有任何错误吗?对于 status 这样的名字,你什么也说不出来。

为了取得更好的效果,应该把 status 替换为类似于 error 或者 statusOK 这样的
名字,同时把 sourceFile 替换为 sourceFileAvailable 、sourceFileFound ,或者其他能
体现该变量所代表含义的名字。

有些程序员喜欢在他们写的布尔变量名前加上 Is 。这样,变量名就变成了
个问题:isdone? isError? isFound? isProcessingComplete ?用 true 或 false 回答问题
也就为该变量给出了取值。这种方法的优点之一是它不能用于那些模糊不清的名
字:isStatus ?这毫无意义。它的缺点之一是降低了简单逻辑表达式的可读性:if
(isFound)的可读性要略差于 if(found).

使用肯定的布尔变量名

否定的名字如 notFound 、notdone 以及 notSuccessful 等较难阅读,特别是如果它们被求反:if not notFound, 这样的名字应该替换为 found 、done 或者 processingComplete ,然后再用适当的运算符求反。如果你找到了想找的结果,那么就可以用 found 而不必写双重否定的 not notFound.
lyoe
2021-11-27 03:53:15 +08:00
主要还是因为序列化的原因
ericgui
2021-11-27 06:34:34 +08:00
@7911364440 为什么?求解。is 就是俩普通字母而已,和 abc 有什么区别么?
koebehshian
2021-11-27 10:28:37 +08:00
方法名用动词,属性名用名词或形容词

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/818150

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX