问一下后端的同学为何你们传参都喜欢 int 1234

2020-05-15 11:29:37 +08:00
 en20

比如接口要传一个请求来源,后端让我传的参是 1 拼多多, 2 淘宝, 3 京东 。。。

为什么不能直接给一个字符串 '淘宝',反正都是要 switch case ,这样也很直观.接手别人的项目里一堆 1234 我都不知道传的是什么,也不写个 map,我很难受

17450 次点击
所在节点    程序员
138 条回复
sagaxu
2020-05-15 11:55:20 +08:00
代码中不应该出现 ascii 以外的字符,传中文还得写成 unicode
huntcool001
2020-05-15 11:55:51 +08:00
主要是映射到 mysql 数据库里方便些. 我们是数据库里不允许用 enum 的.
dongisking
2020-05-15 11:57:50 +08:00
传中文改名字了怎么办?字符兼容性问题怎么搞?
传 taobao,pdd,jd 还不是得要注释一下
Mithril
2020-05-15 11:57:58 +08:00
传 enum 就会被改成 int,所以说直接上 GraphQL 就好了,enum 会自动转换。
shimmerh
2020-05-15 11:58:36 +08:00
如果类型少就用 int 代表就好了,类型太多还是用字母代号
risent
2020-05-15 11:59:32 +08:00
@Dogergo 个人感觉字符串才是比数字是更优雅的设计,尤其是当在你通过 SQL 维护或者统计数据的时候,直接就能看明白结果。
使用 int 的“优点”是在数据库存储上会有些微的节省空间以及性能优势,比如 MySQL 中可以用 tinyint 替代 varchar 。但是这是在以前存储很值钱的时候有点价值,现在对于普通 web 应用这点优势完全不值得牺牲可读性跟可维护性。
shatuo
2020-05-15 12:08:11 +08:00
byte 枚举省带宽。属于强迫症。
kof21411
2020-05-15 12:08:56 +08:00
用 int 比较方便,只要做好注释就没问题了
W1angMh
2020-05-15 12:12:02 +08:00
接口报文肯定是要留文档的 说明 1 代表什么 2 代表什么 不然别人接手肯定是一脸茫然
TypeError
2020-05-15 12:15:02 +08:00
Python 无所谓,可读性高就行,一般习惯英文字符串
opengps
2020-05-15 12:24:01 +08:00
枚举
Cielsky
2020-05-15 12:26:24 +08:00
习惯了,在学校也是这样教的
Suaxi
2020-05-15 12:27:04 +08:00
一般用用-1,0,1,同时加注释说明代表的是什么,传字符串很容易遇到编码的问题
jiyingze
2020-05-15 12:34:30 +08:00
拼音就行,代码是写给人看的。
就这么几个字符串,数据库性能能有多少影响?
kisshere
2020-05-15 12:41:07 +08:00
减少网络传输流量,降低用电量,低碳的 api 协议,绿色地球,从我做起(比心)
lechain
2020-05-15 12:43:41 +08:00
传数字的后果是加一层解释这些数字的逻辑,好处是需要的时候可以把这层逻辑改掉换成别的。。

传字符串的好处是前端觉得方便,后果是业务逻辑代码和字符串处理代码高度耦合,写出一堆 x 一样的代码,日后难以维护
leishi1313
2020-05-15 12:44:09 +08:00
这就体现出来 proto buf 的好处了
rekulas
2020-05-15 12:47:39 +08:00
拼音 /英文是最佳方案,可读性强不容易看错,至于流量和性能的影响在当前的环境下几乎可以认为是 0 了,除非是极度苛刻的通信场景
liuxu
2020-05-15 12:57:37 +08:00
还是以前学 C 语言遗留下来的习惯
前面说怕不兼容,主要也是因为这些年 UTF-8 一路发展过来,以前的语言对中文支持没那么好,而且有还有 windows 的一直是 gb2312,windows xp 坚挺了这么多年,好像 win8 开始才统一 utf-8,处理编码很麻烦

但是现在用中文没毛病了,特别是现在的 java,php,golang,python3,都对 utf-8 支持很好了
bk201
2020-05-15 13:00:47 +08:00
拼多多改为了拼夕夕,你前后端都要改动?

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

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

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

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

© 2021 V2EX