我是做 java 后端开发的,因为安卓端调用查询接口中非必要参数未做空字符串判断,问我后端为什么不将空字符串转成 null 处理?骂我连培训班的差生都不如.我是不是该离开这家公司?
![]() | 1 trait 2019-05-29 23:42:07 +08:00 via iPhone ![]() 空字符转 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 ![]() |
![]() | 5 creanme 2019-05-30 00:05:42 +08:00 via Android 什么逻辑?被同事怼了就离职? |
![]() | 6 k9982874 2019-05-30 00:09:03 +08:00 via iPad ![]() 你就给人家转成“ 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 ![]() 你也是少经验,换我就怂回他爱用不用,搞烦了我随机 return error 给他们,让他们 debug de 到怀疑人生。 |
9 rookiewhy 2019-05-30 00:10:55 +08:00 ![]() 还有这种操作?嫌空指针不够多? |
![]() | 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 ![]() @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 ![]() 这已经是彻底撕破脸了 说实话我怀疑 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 ![]() 偏听则暗,兼听则明. 选填参数要添加判断,过滤所有筛选条件,必填参数为空则返回异常,选填参数为空则跳过本条规则,的确不需要做转换,直接判断就行了. 空包括直接不传和空值(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 nxforce 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 rb6221 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 ![]() 为什么你要离职?你应该想办法让他离职 |
57 kingzt 2019-05-30 11:08:08 +08:00 空字符串和 null 语义本来就不一样, 直接怼回去 |
58 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 ![]() |
![]() | 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 ![]() @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 难道他是培训班的优等生? |