大家一般标记 status 字段是 1 有效还是 0 有效

2016-10-17 15:00:37 +08:00
 flight2006

平常自己设计字段的时候都是 0 无效, 1 有效(或非 0 有效),感觉是学 C 语言遗留下来的, C 语言里 if 判断 0 为 false ,其他整数都是 true 。但是工作的时候发现有些同事以及合作方的文档里面好多 0 有效, 1 无效,不明白为什么会有这个习惯或者出处是哪里,大家都是怎么标记的。

4509 次点击
所在节点    问与答
16 条回复
dofy
2016-10-17 15:06:38 +08:00
这得看字段的语义, 0 和 1 一般表示 off 和 on ,
如果字段意思是“使无效”,那值 1 表示 on ,自然就代表“无效”。
juneszh
2016-10-17 15:09:57 +08:00
当无效状态比较多时如 1234 ,就用 0 标识有效比较实用了,不过这种情况应该叫 error 而不是 status 了, API 这样用比较多
bearice
2016-10-17 15:10:48 +08:00
0=false 非 0=true <== 把 int 当 boolean 用
0=success 非 0=error_code <== 把 int 当 int 用
yhxx
2016-10-17 15:11:12 +08:00
刚刚用到的一个接口里的 : 0 草稿, 1 进行中, 3 已结束,-1 已删除
没有 2
csx163
2016-10-17 15:12:47 +08:00
的确有些地方 0 是无异常的意思
flight2006
2016-10-17 15:19:16 +08:00
@juneszh 明白了,正确的状态只有一个,而异常 /错误的状态有多种,用 0 标记正常就比较合适
xenme
2016-10-17 15:39:58 +08:00
win32 api, return 0 都是正常,正数是结果,负数是异常代码,是否有人受这个影响,然后 0 是正常,其他都异常
tonghuashuai
2016-10-17 16:36:45 +08:00
应该这么解释:幸福的人都是一样的,不幸的人各有个的不幸。
sensui7
2016-10-17 16:47:26 +08:00
干脆用字符串算了'on', 'off', 'pending', 'error', 'unavailable'
chnhyg
2016-10-17 16:53:28 +08:00
我们的数据库的设计有关这方面的规范:

1 、仅两种可能性且含义相反,并确保绝对不可能出现第三种可能性的字段使用 bit 类型。比如 IsSuccess 字段的:成功、失败。且使用有意义的前缀,比如 Is 、 Can 、 Has 等等。
2 、 N 种可能性且含义不相反的字段使用 tinyint 类型。比如 Gender 字段的:男、女。
3 、有可能出现第三种可能性的也使用 tinyint 类型。比如 Gender 字段的:保密。
4 、 tinyint 必须从 1 开始,不得从 0 开始。
shlabc
2016-10-17 17:09:24 +08:00
要看量级

数值型占用的存储空间、所需索引存储空间大多小于字符型

小型系统中,字符型有利于扩展,大型系统中,尽量用数值型吧

个人喜欢默认为 0 (不同的业务场景表达不同的意思)
sorra
2016-10-17 17:26:07 +08:00
为了预防误会,我会尽量不用 0 ,从 1 开始。
benpichu
2016-10-17 18:21:02 +08:00
[使用 enum 比较好(]
fxxkgw
2016-10-17 18:37:19 +08:00
虽然很久不写 C 了 但我记得 C 中 0 是代表返回正确的啊。。
mingyun
2016-10-17 23:13:51 +08:00
@chnhyg 从 0 开始有什么弊端
lln133208
2016-10-18 09:17:48 +08:00
UNIX/Linux 中系统调用一般返回值为 0 时表明调用成功,返回-1 表明有 error 。我觉得是受这个影响。

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

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

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

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

© 2021 V2EX