枚举类型是从 0 开始还是从 1 开始

2022-07-22 14:58:54 +08:00
 cnoder

起因:那天听到前端 leader 在阴阳怪气我设计的枚举不是从 0 开始,跟旁边的人说什么“但凡学过 java 。。。。。也应该知道。。。”云云

我(我是后端)也没和他辩解

我说下我的理由吧

  1. 如果用 int 来代表 true/false ,我会设计为 0/1
  2. 如果是几种状态值,我会选择从 1 开始,避免选择 0 。因为某些弱类型语言在判断 0 的时候会自动做类型转换,而且我们目前业务上使用的后端语言也是 lua ,数组索引是从 1 开始的。

所以我在跟前端定义参数的时候 选择 1 、2 、3 来表示样式 123 。

我这理由充分嘛?

7173 次点击
所在节点    程序员
94 条回复
YouRTBUG
2022-07-22 17:42:05 +08:00
就这也是 leader ?
molvqingtai
2022-07-22 17:45:29 +08:00
我写前端使用 -1 表示全部🐶
BeautifulSoap
2022-07-22 17:56:02 +08:00
都用枚举了还在乎起始值?直接给他来个 99 起,专治不服
lihengyu
2022-07-22 17:56:08 +08:00
我一般 100 ,200 ,300🐶
catsoul
2022-07-22 18:01:12 +08:00
@BeautifulSoap 雀食,枚举就别跟其他的混了,直接 100 起跳
Building
2022-07-22 18:01:19 +08:00
枚举值和属性值绑定,随便
枚举值和属性值无关,还是随便
但我喜欢有默认值的时候在 0 位放默认值,没有默认值用 none
stevefan1999
2022-07-22 18:07:49 +08:00
不要爭論這個問題

lua 壬震怒(我不是)

實際上 lua 是沒有定義索引方向 但社羣定義是 1 開始

0 開始還是 1 開始 蘊含了 offset 與 absolute positon 黨派之爭 我個人讀算法時是支持 1 開始的 但實際上用還是最好得 0
potatowish
2022-07-22 18:16:04 +08:00
不要和前端、客户端讨论后端的问题,和一个外行讨论技术问题就是浪费时间。
JaguarJack
2022-07-22 18:53:37 +08:00
你的理由是对的,前端的确有这种情况
wktrf
2022-07-22 19:09:58 +08:00
作为前端我也喜欢用 1 开始,0 很容易疏忽导致判断出现问题
lucays
2022-07-22 19:20:11 +08:00
作为写 python 的,除非枚举就俩,否则肯定从 1 开始
mmdsun
2022-07-22 19:27:11 +08:00
有设计文档说应该从 1 开始不过有争论。有个例子:Mysql 的枚举是从 1 开始的,0 会报错。

文档写: (✔)
0 ,保留字
1 ,状态 1
2 ,状态 2

文档: ( X )
1 ,状态 1
2 ,状态 2
buxudashi
2022-07-22 19:34:11 +08:00
1 就是 1.而 0 就不一定了。有时 false,null,空字符串,empty(),什么乱七八糟的相通。

所以你是对的。
elevioux
2022-07-22 20:07:31 +08:00
php 开发,从 1 开始,理由一样
xiubin
2022-07-22 20:11:11 +08:00
从 0 开始,0 是无业务意义或者默认的一档,比如 0 可以是:unknow 、none 、default 、normal 。

iOS 开发( OC 语言)一般无法识别 nil 0 null 的区别
mengzhuo
2022-07-22 20:12:02 +08:00
枚举的话,0 一般是非法(就是防止协议解析失败)
byzod
2022-07-22 20:12:06 +08:00
标准答案:关你卵事,我从 114514 开始
FrankHB
2022-07-22 20:25:25 +08:00
下标的问题,只能说历史丈育太多,典都不知道,还用得着举例了:www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html
Lua ?算哪根葱……况且 Lua 用户自己很多就不满意:lua-users.org/wiki/CountingFromOne
再有争议可能还是数学丈育更多,分不清基数和序数。

至于枚举……谁告诉你枚举就非得有从几开始的问题?
还是 C 枚举当整数,于是随便什么语言都需要关心编码?
( Swift:?)
而且咋不学 C 把 char 也整成整数类型呢?

@byzod 太臭了,要肛掉。
icyalala
2022-07-22 20:42:34 +08:00
如果是 enum 关联到整数,那我还是倾向从 0 开始,0 就是一个默认值。
lua 那个设计 table 就是从 1 开始的,所以 enum 从 1 开始也算符合他们的习惯。
其他不少语言 enum 可以不关联到整数,那就不用争了。
uselessVisitor
2022-07-22 21:26:34 +08:00
想从多少就多少呗,写清楚不就行了。。咋还有这种领导。。

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

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

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

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

© 2021 V2EX