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

1 天前
 drymonfidelia
4649 次点击
所在节点    程序员
45 条回复
Outshine
1 天前
@finab 那有没有可能,不规范的是苹果
hez2010
1 天前
IsEnabled 可以说是冗余,Enabled 就可以。
但是 IsName 和 Name 就是完全不同的含义了。

不过个人认为只要不是名词应该都不需要加那句多余的 Is 。
dddd1919
1 天前
见名知意
也可以 can/need/has 等等表判断语气的前缀开头,不加可能产生歧义,加上更明确,那干脆就加

参考上古匈牙利命名法的历史
Richared
1 天前
我一般都加一个 check 前缀,其实返回值就能区分了,你不能 isname 返回值是个 string 吧,不得事 bool 么。
RichardPlus
1 天前
多敲俩字母不费事,但能省事儿。找了一个我写的类
[ObservableProperty] private string _Title = string.Empty;

[ObservableProperty] private bool _HasChanged;

[ObservableProperty] private bool _Completed;

[ObservableProperty] private bool _CanMeasure;

[ObservableProperty] private bool _CanSave;

[ObservableProperty] private bool _CanRefresh;

[ObservableProperty] private bool _IsPaged;

[ObservableProperty] private bool _HasNextPage;

[ObservableProperty] private bool _HasPrevPage;

[ObservableProperty] private bool _HasTextFilter;

[ObservableProperty] private string _Keyword = string.Empty;
COW
1 天前
建议代码里的 bool 值基本只用 is ,has ,can 这些前缀就足够了,数据库字段命名也是如此,不要用 check 这种的意义不明的前缀。另外,不要反义词,比如用 isEnabled ,不要用 isDisabled 这种。
wjfz
1 天前
dog.isAnimal 一看就是 bool
dog.animal 不是很懂想表达什么

类似的还有数据库字段命名:
company.creator_id 一看就是 ID
company.creator 不知道到底是 ID 还是对象

像你说的 Enabled 这种一般不会加 is ,没必要。
hiboshi
1 天前
不多于啊,我看变量 我怎么一眼就知道是 bool 类型呢
k9982874
1 天前
先看框架语言,如果框架语言都使用 is 那就加 is 跟框架对齐,比如 js 、c#。
再看词性,本身就是 adj 不会引起歧义就可以考虑不加,比如 enabled ,activated 。
shakukansp
1 天前
咋就冗余了,打英文 is running 和 is enabled 不都是正确用法吗
lqw3030
1 天前
我记得 java 语言某些语言框架默认 boolean 的 set/get 方法使用 is 开头,导致如果错误的使用 is 开头方法反倒会出问题
maiyasu
1 天前
Ruby 看着你们讨论这个笑而不语, 直接在变量后面加一个问号
dobelee
1 天前
1. 毫无冗余。
2. 不加 Is 是制造歧义。
dcsuibian
1 天前
我个人觉得是冗余了,所以我不用。
类似地,我也很少在后面加 data 或 info
tyrantZhao
1 天前
个人感觉,现在加不加 is 都无所谓,反正一眼能看出来。
liprais
1 天前
“这他妈谁写的狗屁!”
“我擦我写的,三年前”
sir283
1 天前
看个人习惯,有的喜欢直接明了就会加 is ,有的喜欢简洁一点,就会省去 is 。
webcape233
1 天前
```shell
systemctl is
is-active -- Check whether units are active
is-enabled -- Check whether unit files are enabled
is-failed -- Check whether units are failed
isolate -- Start one unit and stop all others
is-system-running -- Query overall status of the system
```
这比 bool_xxx 好多了吧
ty29022
1 天前
哼!语义上的那都不叫事
上古代码还有很多这种表示类型的
szPath
strAddress
dwFlags
cbSize
netabare
1 天前
对于 boolean 的属性,也就是类型是`bool`的变量、字段或属性,isXxx 没什么不好的,而且还能统一清晰的让人知道这个字段表达「 XXX 的状态」这个概念。

真正有病的是某些语言里 boolean 的 getter 非要叫 isXxx ,所以禁止 boolean 属性以 is 开头这件事。

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

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

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

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

© 2021 V2EX