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

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

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

isChild 与 child 歧义就大了。

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

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

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

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

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

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

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

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

© 2021 V2EX