我是做 java 后端开发的,因为安卓端调用查询接口中非必要参数未做空字符串判断,问我后端为什么不将空字符串转成 null 处理?骂我连培训班的差生都不如.我是不是该离开这家公司?
1
trait 2019-05-29 23:42:07 +08:00 via iPhone 9
空字符转 null ???这人是在骂自己吧
|
2
42ll 2019-05-29 23:42:10 +08:00 via iPhone
不 你应该打 年轻轻狂 胜者为王
|
3
springGun OP @trait 当时对方突然加大音量,我一愣,整个人都懵逼了,不知道回答什么好.哎,也是加班加太累了,都不知道怎么反驳了
|
4
tomczhen 2019-05-29 23:49:34 +08:00 2
|
5
creanme 2019-05-30 00:05:42 +08:00 via Android
什么逻辑?被同事怼了就离职?
|
6
k9982874 2019-05-30 00:09:03 +08:00 via iPad 10
你就给人家转成“ null ”嘛
|
7
scnace 2019-05-30 00:09:09 +08:00 via Android
xswl 那你先让他把自己代码里的空字符串都改成 null
|
8
drush 2019-05-30 00:10:19 +08:00 22
你也是少经验,换我就怂回他爱用不用,搞烦了我随机 return error 给他们,让他们 debug de 到怀疑人生。
|
9
rookiewhy 2019-05-30 00:10:55 +08:00 1
还有这种操作?嫌空指针不够多?
|
11
shehuizhuyi 2019-05-30 00:20:00 +08:00
你们都是 java 啊 菜鸡互啄
|
12
NerverLibis 2019-05-30 00:35:19 +08:00 via iPhone
我们的安卓不支持整形…不支持 description 之类的字段…每次我都是 string ('111')
|
13
freak118 2019-05-30 00:45:42 +08:00
为什么你们的同事都这么凶啊 我们平常都和和气气的啊
|
14
cyssxt 2019-05-30 01:03:59 +08:00 via iPhone
空字符串为什么要转成 null ?理由?
|
15
MonoLogueChi 2019-05-30 01:11:16 +08:00 via Android
空字符串是 "" 还是 empty ?
|
16
trait 2019-05-30 01:25:37 +08:00 via iPhone
@springGun 那菜鸡再在这个问题上 bb 就甩 clean code/Paterns of Enterprise Application Architecture 给他:人菜多读书
|
17
gramyang 2019-05-30 06:36:38 +08:00 via Android 1
@drush 而且还要搞一个时间判断,每天晚上 2 点到 3 点没半小时随机返回 error,让丫被运维的电话从床上轰醒起来查 bug。
|
18
guotao2beijing 2019-05-30 08:10:56 +08:00 via iPhone
我们 java 后台连 double 都传成空给我,我跟谁说理去。你这是脾气好,不是你水平差。
|
19
Raisu 2019-05-30 08:36:38 +08:00
就传个字段能看出水平了?
|
20
lusi1990 2019-05-30 09:03:29 +08:00 via Android
这 Android 水平也不行啊
|
21
Vdream 2019-05-30 09:12:06 +08:00
我是做 android 的 不管传啥只要约定好不久可以了吗 最烦一个系统传值规则变来变去
|
22
98jiang 2019-05-30 09:16:45 +08:00
又不是什么大事
|
23
wugz 2019-05-30 09:19:22 +08:00 via iPhone
这个本来就不是什么大事,商量一下就好了,但就按照你说的那样,说明人家并不把你放眼里
|
24
hahiru 2019-05-30 09:19:49 +08:00
什么鬼,空字符串返回 NULL ?脑子瓦特了。
|
25
daguaochengtang 2019-05-30 09:20:40 +08:00
被怼了就离职,你以后是当算当跳跳忍者吗
|
26
zoeyzhang 2019-05-30 09:24:59 +08:00
你们公司安卓这么 nb 的么 我司前端移动端都是背锅的 : )
|
27
zsk425 2019-05-30 09:31:39 +08:00
对方也是够没素质的
另外,最好以后提供接口的时候,在文档里描述下字段取值类型、范围、是否可为 null |
28
yalin 2019-05-30 09:33:35 +08:00
把定义接口定负责人,拖出来,不要技术与技术之间相互伤害
|
29
michaelcheng 2019-05-30 09:33:54 +08:00
我们这儿后端是数据库存啥就给你啥,啥都不处理,想自己用的爽,自己整个 BFF 层处理(前端的工作)
|
31
forYou 2019-05-30 09:34:59 +08:00
为什么你们的同事都好凶,我们公司氛围就挺和气的
|
32
gouchaoer2 2019-05-30 09:36:27 +08:00 2
这已经是彻底撕破脸了
说实话我怀疑 LZ 你描述事实省略了一些东西,比如他是不是认为你在别的地方技术能力不行,而这个 null 只是出气的一个导火索,因为在公司这种地方直接当面骂对方的行为,如果不是某一方特别傻逼的情况,无异于职场自杀 |
33
nicevar 2019-05-30 09:42:36 +08:00
不一定是这点问题导致别人暴躁的,如果你经常挖坑,可能这只是最后一根稻草
流程上来说你们应该有文档约定,尽量减少沟通,直接看文档 我做客户端的时候如果服务端总是瞎搞,上火了也会怼的,最后急了干脆跟公司说服务端我自己来做,后面公司客户端的接口部分完全由我来做。 |
34
hhhsuan 2019-05-30 09:46:16 +08:00 via Android
空字符串,null,还是根本没有,这三者是有语义上的差别的,并不是说哪一种是错的,主要看你们的约定,习惯,具体的场景决定。
|
35
Vegetable 2019-05-30 09:48:31 +08:00 1
偏听则暗,兼听则明.
选填参数要添加判断,过滤所有筛选条件,必填参数为空则返回异常,选填参数为空则跳过本条规则,的确不需要做转换,直接判断就行了. 空包括直接不传和空值(null/"")两种情况,都应该妥善处理. 在公司对他他人的技术有怨言可能是菜鸡互啄,也可能是大神嫌弃菜鸡,但是一般不会有大神被菜鸡嫌弃的情况. |
36
keikeizhang 2019-05-30 10:16:11 +08:00
之前和算法合作,key 是中文,还有分隔符,不是下划线,是 - ,
比如这样 北京-海淀区 呵呵 |
39
exceloo 2019-05-30 10:24:13 +08:00
他自己煞笔呗,前端不判断所有情况还有理了?要是接口挂了是不是还得咆哮为啥接口会挂??
|
42
passerbytiny 2019-05-30 10:25:57 +08:00
你是不是该离职不好说,但你要主动离职了,对方估计也该滚蛋了。加班时间因为接口问题吵起来,这种环境八成是“稳定”为主。
|
43
Donne 2019-05-30 10:27:19 +08:00
让安卓端来讲,可能是另一个故事了。
|
44
passerbytiny 2019-05-30 10:30:50 +08:00
@springGun #33 !!!!兄弟,我也想骂你。查询条件 null 和 "" 同时判断是常识,因为查询条件是通过 HTTP 参数传进来的。
|
46
hstdt 2019-05-30 10:39:02 +08:00 via iPhone
我更喜欢 null 返回空字符串给我
|
47
springGun OP @passerbytiny 那查询一个空字符串的数据怎么办?我也没见 ali 和腾讯的接口会给你忽略掉该条件,要么返回参数检验异常,要么直接返回空的查询结果
|
48
wutiantong 2019-05-30 10:46:17 +08:00
看楼主后面的回复,好多人前面都理解错了:
并非客户端要求后端用 null 代替,而是客户端发请求时传了个空字符串,后端(楼主)没做判断。 |
50
aLazarus 2019-05-30 10:51:23 +08:00 via Android
还是要做判断的吧…
|
51
joyhub2140 2019-05-30 10:55:05 +08:00
空字符串或者 null 值,应该不传,让客户端采取 default 值。
|
52
jiuanzi 2019-05-30 10:56:54 +08:00 via Android
伟大都是熬出来的
|
53
passerbytiny 2019-05-30 10:59:53 +08:00
@springGun #43 你能给我找出来一个查询“非 null 但空字符串”的需求出来吗?对于你的第二句话,我觉得没必要做深入回复,一句“你去 ali 和 腾讯吧”就足够了。
|
54
janus77 2019-05-30 11:00:11 +08:00 via iPhone
如果你没隐瞒别的,那这个安卓有点辣鸡
你可以直接一句:这接口 ios 用着没问题就你有问题,怪我咯 |
55
huoshanhui 2019-05-30 11:00:28 +08:00
解决问题的前提是好好说话。你确定他是这种语气和措辞的话建议你先调教下他。
|
56
yvescheung 2019-05-30 11:05:33 +08:00 1
为什么你要离职?你应该想办法让他离职
|
57
kingzt 2019-05-30 11:08:08 +08:00
空字符串和 null 语义本来就不一样, 直接怼回去
|
58
springGun OP @passerbytiny
elasticsearch 查询文档中字段为""的需求又不是没有 |
59
kevin1852 2019-05-30 11:14:57 +08:00
应该是 API 里的可空请求参数没有传或者传的“”,bind parameter 时自动转成了“”,然后查询的时候只判断了是不是 null,导致查询不到结果吧?
|
60
kuyuzhiqi 2019-05-30 11:16:37 +08:00
做 Android 的表示会自己用 TextUtils.isEmpty()判断,这种 Android 可以走了
|
61
sanqian 2019-05-30 11:19:37 +08:00
怼回去啊
|
62
kuyuzhiqi 2019-05-30 11:22:17 +08:00
@gouchaoer2 确实,这么点东西不至于说这么重的话
|
63
biantaoGG 2019-05-30 11:25:34 +08:00
表示这种难道后端不应该也做吗,本人安卓开发,这种接口一般调之前都会用 TextUtils.isempty 判断,但是后端也应该对非必须字段做判空处理啊,并且很显然后端更应该做啊,你的接口又不一定只有我一个人调,防止接口报错难道不应该做好各种判空?
|
64
zek 2019-05-30 11:27:06 +08:00 via Android
公司规定要把空字符串转成 null? 没有就按你的规矩来,还惯着他不成
|
65
mmsky 2019-05-30 11:27:42 +08:00
这个是谁强势谁有理。我服务端的,有时候有些数据需要处理一下,不想吵架的时候了,就处理好再返回。想吵架的时候,就懒得处理,直接返回
|
66
passerbytiny 2019-05-30 11:30:58 +08:00 1
|
67
biantaoGG 2019-05-30 11:31:03 +08:00
楼上的老哥们怎么都理解成了人家要把""转成 null 啊, 很明显是客户端穿了个""参数到服务端,让服务端吧""当成 null 一样的无数据处理,wfl
|
68
kuyuzhiqi 2019-05-30 11:33:42 +08:00
@passerbytiny 那也差不多,Android 端为啥不做 TextUtils.isEmpty()判断再请求,😄
|
69
wangcansun 2019-05-30 11:33:44 +08:00
null 和空字符串是两件事啊
|
70
liukanshan 2019-05-30 11:38:56 +08:00
还没看出来吗 这个已经不是接口对错的问题了 而是对你个人有一些看法 。
协议应该约定好 空字符串转换成 null 会更容易导致空指针 甚至在一些书里面为了避免空指针都采用这种写法 return null => return new ArrayList() 谁对谁错应该很清楚吧 你也没有必要和同事争论 你同事非蠢即坏。 另外为什么要离职 他让你不爽 你也可以让他不爽。 |
71
wl904836468 2019-05-30 11:41:29 +08:00
你应该继续挖更大的坑,恶心死他,到时候直接甩锅到他头上。他还怼你的话,怂啥,下班别走
|
72
passerbytiny 2019-05-30 11:51:38 +08:00
假如界面长这样(字符画请复制到文本编辑器中并采用等宽字体查看):
+-----+ A |abc | +-----+ +-----+ B | | +-----+ 那么,此时 B 是 null 还是 "" |
73
passerbytiny 2019-05-30 11:52:58 +08:00
@kuyuzhiqi #64 见上面。这不是 TextUtils.isEmpty() 能解决的事
|
74
TobiahShaw 2019-05-30 11:57:58 +08:00
建议定义接口的时候,定义是否可空,例如文档定义变量类型的时候,Integer Nullable ; int NotNull ;
|
75
TobiahShaw 2019-05-30 12:00:18 +08:00
建议工作的时候还是要以解决问题为目的,而不是互相伤害,这样他出发点不是解决问题抱怨的时候,就会显得他很 low (或许吧,至少你这么想不会让自己很尴尬,而去理性分析解决方案)。
主要还是建议公事公办。 |
77
jxf2008 2019-05-30 12:01:57 +08:00
下班后直接找到真人 PK,然后双双被开除
话说就算走也要拉个垫背的吧 |
78
ben1024 2019-05-30 12:16:24 +08:00
怼回去
|
79
birdrally 2019-05-30 12:23:53 +08:00 via iPhone
他说的前半句在理,有则改之,走不是必须的
|
80
mrdemonson 2019-05-30 12:31:13 +08:00 via Android
对象的 null 和""是完全不同的概念,好比领导安排了研究任务,没做和做了但没研究出来,完全是两个问题。对接时候,要做好接口规范,用文档白纸黑子写出来,避免接锅,容易追责。
|
81
66beta 2019-05-30 12:37:29 +08:00 via Android
不是技术问题,是情商问题
如果他对别人不这样,你自己也查查原因 |
82
wanghaa 2019-05-30 12:47:10 +08:00 via Android
这尼玛是服务端没做校验,一群人怎么理解的,真服了
|
83
tabris17 2019-05-30 12:50:07 +08:00
你跟他谁比较强壮?
|
84
wanghaa 2019-05-30 13:00:18 +08:00 via Android
@passerbytiny 一群瞎子,我佛了
|
85
ThomasZ 2019-05-30 13:11:33 +08:00 via Android
这前端怼后端。。。 凭什么转 null
|
86
chairuosen 2019-05-30 13:12:48 +08:00
我理解是不是类似搜索接口,query?keyword= ,结果 keyword=''没返回结果,客户端期待返回全部内容。
如果是,是你的问题。 |
87
tt67wq 2019-05-30 13:43:39 +08:00
忍一时越想越气,退一步越想越亏
|
89
huage2580 2019-05-30 14:13:49 +08:00
8 说了,我觉得 86L 说的对
|
90
winglight2016 2019-05-30 14:37:05 +08:00
lz 无需反驳啊,后台是需要处理这种情况的——你不能假定传过来的值“全部”是经过校验的。http 协议里,参数的等号后面什么都没有就表示 java 里的 null,前端这么搞毫无问题。
至于走不走,我是觉得不至于这么点小事儿就要离职吧,有则改之,无则加勉啊。每个人遇到自己的知识盲点都要离职,这项目就没法做啦。 |
91
amon 2019-05-30 14:42:23 +08:00
判断参数不等于 null,并且不等于空字符串,才将参数设置到查询条件里面。
沟通不就完了,让他气到骂人估计你当时也挺拽的~ |
92
wangxiaoaer 2019-05-30 14:45:41 +08:00 1
@RicardoY #10 空值 null 值在 json 序列化的时候可以过滤掉。
|
93
Gakho 2019-05-30 15:00:34 +08:00
Python 就这点好, 一个 if xxx 就能同时去掉了 None 跟空字符串了🙃
|
94
loryyang 2019-05-30 15:07:20 +08:00
空和 null 就不是一个东西啊,得看具体业务定义,需要的到底是什么,这个属于定接口的问题。不是水平问题
|
95
pcatzj 2019-05-30 15:10:29 +08:00 via Android
即使楼主有理,这种反讽也让人膈应
|
96
yanyuyu89757 2019-05-30 15:18:13 +08:00
有这种同事,直接给他一个大嘴巴子
|
97
shx1943 2019-05-30 15:28:09 +08:00
我上一家公司老板在背后说我技术垃圾,连他上学时候技术都不如,然后第二天招聘经验三年的技术,我干了不到一年,去他那干了不到一个月,把三个新人全部踢掉
|
98
runtu2019 2019-05-30 15:28:19 +08:00
@chairuosen #86
应该是这么个理,后端根据可选参数过滤出结果,安卓传了“”,后端没做好验证去除可选参数或者判空,直接根据“”过滤的结果出问题了 这真的是个低级错误了,最后发现是你在接受传参时没做好验证,要我我也抓狂 但是对方这种方法肯定是不可取的,顶多开玩笑叫请吃顿饭算了 有点自信,慢慢积累经验吧,查询数据库的时候多考虑传入字符串的可能性 加油,共勉 |
99
loy6491 2019-05-30 16:42:50 +08:00
可能他是培训班的中等生。
|
100
whl619969187 2019-05-30 16:44:04 +08:00
难道他是培训班的优等生?
|