为什么很多人喜欢在 bool 类型变量名称开头都加个 is?在强类型语言中,这个 is 是否有些多余?

51 天前
 drymonfidelia
5581 次点击
所在节点    程序员
48 条回复
cmdOptionKana
51 天前
主要是因为命名是件很麻烦的事情,加上 is 可以降低与其他命名冲突的可能性,就这个优点已经值得加上了。
factionstrue
51 天前
一是这个名称的本身含义,二是防止冲突。
wu67
51 天前
不喜欢 is 你可以 if...一眼就能看出这个变量是啥啥啥呀
windmoonwind
51 天前
提高代码的可读性和维护性
增强代码的表达力和清晰度
cnbatch
51 天前
看情况,有时候我会写
has_been_xxx
hasBeenXXX
can_do_xxx
canDoXXX

避免歧义、准确表述最重要。该用 is 时就用 is ,该用短语就用短语,没必要畏手畏脚。
liuidetmks
51 天前
看代码不一定要 ide 吧,看到 is 就知道是 bool ,一目了然
chendy
51 天前
看个人习惯或者团队要求,统一就行,别有的有有的没
顺便一说对于 java 来说绝对是多余的,因为访问需要走 isXxx ,再加一层就会变成 isIsXxx
donaldturinglee
51 天前
主要是添加语义和防止冲突,不然你在做很大上下文的情况下,容易搞混
zdw189803631
51 天前
写 js 时候用
shintendo
51 天前
这是否也是一种匈牙利命名法
kzfile
51 天前
可以让代码更接近语言,我就很喜欢用很长的命名方式,尽可能描述信息
imdong
51 天前
有必要,你也不想 isSetName 与 SetName 分不清谁是谁吧?

isChild 与 child 歧义就大了。

虽然大多时候可以通过 if(!name()) 强转判断,但有明确的类型岂不更好?
Outshine
51 天前
加 is 本身没有问题,有问题的是在本身语义就是布尔的名字前面加了一个 is ,比如 enable 、deleted 等
forty
51 天前
1.这是语义化、可读性的要求,有助于看名知意,否则读代码时,你需要先查看类型再思考含义?
2.也不都是 is, 还有 can, has, -able, 等等,共同点是接近英语用词。 如:isAnimal (这里不用 is 就不能良好表达含义) isRunning, hasEmail, available, callable
3.也有不用这些词缀也很合理的场景。如:expired, running, exists

总之,懂点英语,就不会困惑了。
finab
51 天前
@Outshine
isEnabled 是一个很规范的写法吧,像苹果就大量使用这种变量名
vfs
51 天前
搜了以下代码库,有一个例子: BOOL IsClient, 不用 "Is" 的话,Client 变量歧义会不会有点儿大啊。 别人看到第一印象肯定不会认为它是一个 BOOL
uds9u32br
51 天前
isEnabled 这种形容词前面还加 is ,是否略微繁琐了一些
写在代码里面语义个人感觉 Enabled 更舒服

if Enabled {
xxx
}
lululau
51 天前
楼主想说的:1. 强类型 -> 静态类型; 2. 形容词前面加 is

形容词前面加 is ,确实是没必要,有的时候甚至会造成问题,比如 enabled / running ,没必要写成 isEnabled / isRunning
Kenmin
51 天前
前端一些约定俗成的`boolean`变量不会加,比如`loading` `show`等。
其他的也都会加`is` `has`之类的前后缀,即使使用的是 TypeScript 注明了类型
adoal
51 天前
如果是形容词性的表语,不加 is 也可以清晰表达语义,但名词性的表语不加系动词基本上就是可读性的噩梦了。

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

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

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

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

© 2021 V2EX