V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
flight2006
V2EX  ›  问与答

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

  •  
  •   flight2006 · 2016-10-17 15:00:37 +08:00 · 4505 次点击
    这是一个创建于 2988 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    个人喜欢默认为 0 (不同的业务场景表达不同的意思)
    sorra
        12
    sorra  
       2016-10-17 17:26:07 +08:00
    为了预防误会,我会尽量不用 0 ,从 1 开始。
    benpichu
        13
    benpichu  
       2016-10-17 18:21:02 +08:00 via Android
    [使用 enum 比较好(]
    fxxkgw
        14
    fxxkgw  
       2016-10-17 18:37:19 +08:00
    虽然很久不写 C 了 但我记得 C 中 0 是代表返回正确的啊。。
    mingyun
        15
    mingyun  
       2016-10-17 23:13:51 +08:00
    @chnhyg 从 0 开始有什么弊端
    lln133208
        16
    lln133208  
       2016-10-18 09:17:48 +08:00
    UNIX/Linux 中系统调用一般返回值为 0 时表明调用成功,返回-1 表明有 error 。我觉得是受这个影响。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6134 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 02:30 · PVG 10:30 · LAX 18:30 · JFK 21:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.