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

昨天加班被安卓端怼了,说我连培训班差生都不如,我是不是该离职?

  •  
  •   springGun · 2019-05-29 23:37:27 +08:00 · 12363 次点击
    这是一个创建于 2007 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我是做 java 后端开发的,因为安卓端调用查询接口中非必要参数未做空字符串判断,问我后端为什么不将空字符串转成 null 处理?骂我连培训班的差生都不如.我是不是该离开这家公司?

    122 条回复    2019-06-02 10:33:10 +08:00
    1  2  
    trait
        1
    trait  
       2019-05-29 23:42:07 +08:00 via iPhone   ❤️ 9
    空字符转 null ???这人是在骂自己吧
    42ll
        2
    42ll  
       2019-05-29 23:42:10 +08:00 via iPhone
    不 你应该打 年轻轻狂 胜者为王
    springGun
        3
    springGun  
    OP
       2019-05-29 23:49:00 +08:00
    @trait 当时对方突然加大音量,我一愣,整个人都懵逼了,不知道回答什么好.哎,也是加班加太累了,都不知道怎么反驳了
    tomczhen
        4
    tomczhen  
       2019-05-29 23:49:34 +08:00   ❤️ 2
    creanme
        5
    creanme  
       2019-05-30 00:05:42 +08:00 via Android
    什么逻辑?被同事怼了就离职?
    k9982874
        6
    k9982874  
       2019-05-30 00:09:03 +08:00 via iPad   ❤️ 10
    你就给人家转成“ null ”嘛
    scnace
        7
    scnace  
       2019-05-30 00:09:09 +08:00 via Android
    xswl 那你先让他把自己代码里的空字符串都改成 null
    drush
        8
    drush  
       2019-05-30 00:10:19 +08:00   ❤️ 22
    你也是少经验,换我就怂回他爱用不用,搞烦了我随机 return error 给他们,让他们 debug de 到怀疑人生。
    rookiewhy
        9
    rookiewhy  
       2019-05-30 00:10:55 +08:00   ❤️ 1
    还有这种操作?嫌空指针不够多?
    RicardoY
        10
    RicardoY  
       2019-05-30 00:11:58 +08:00 via Android   ❤️ 1
    @tomczhen 请问正确的做法是怎么样的..直觉上感觉空字符串和 null 应该不等价
    shehuizhuyi
        11
    shehuizhuyi  
       2019-05-30 00:20:00 +08:00
    你们都是 java 啊 菜鸡互啄
    NerverLibis
        12
    NerverLibis  
       2019-05-30 00:35:19 +08:00 via iPhone
    我们的安卓不支持整形…不支持 description 之类的字段…每次我都是 string ('111')
    freak118
        13
    freak118  
       2019-05-30 00:45:42 +08:00
    为什么你们的同事都这么凶啊 我们平常都和和气气的啊
    cyssxt
        14
    cyssxt  
       2019-05-30 01:03:59 +08:00 via iPhone
    空字符串为什么要转成 null ?理由?
    MonoLogueChi
        15
    MonoLogueChi  
       2019-05-30 01:11:16 +08:00 via Android
    空字符串是 "" 还是 empty ?
    trait
        16
    trait  
       2019-05-30 01:25:37 +08:00 via iPhone
    @springGun 那菜鸡再在这个问题上 bb 就甩 clean code/Paterns of Enterprise Application Architecture 给他:人菜多读书
    gramyang
        17
    gramyang  
       2019-05-30 06:36:38 +08:00 via Android   ❤️ 1
    @drush 而且还要搞一个时间判断,每天晚上 2 点到 3 点没半小时随机返回 error,让丫被运维的电话从床上轰醒起来查 bug。
    guotao2beijing
        18
    guotao2beijing  
       2019-05-30 08:10:56 +08:00 via iPhone
    我们 java 后台连 double 都传成空给我,我跟谁说理去。你这是脾气好,不是你水平差。
    Raisu
        19
    Raisu  
       2019-05-30 08:36:38 +08:00
    就传个字段能看出水平了?
    lusi1990
        20
    lusi1990  
       2019-05-30 09:03:29 +08:00 via Android
    这 Android 水平也不行啊
    Vdream
        21
    Vdream  
       2019-05-30 09:12:06 +08:00
    我是做 android 的 不管传啥只要约定好不久可以了吗 最烦一个系统传值规则变来变去
    98jiang
        22
    98jiang  
       2019-05-30 09:16:45 +08:00
    又不是什么大事
    wugz
        23
    wugz  
       2019-05-30 09:19:22 +08:00 via iPhone
    这个本来就不是什么大事,商量一下就好了,但就按照你说的那样,说明人家并不把你放眼里
    hahiru
        24
    hahiru  
       2019-05-30 09:19:49 +08:00
    什么鬼,空字符串返回 NULL ?脑子瓦特了。
    daguaochengtang
        25
    daguaochengtang  
       2019-05-30 09:20:40 +08:00
    被怼了就离职,你以后是当算当跳跳忍者吗
    zoeyzhang
        26
    zoeyzhang  
       2019-05-30 09:24:59 +08:00
    你们公司安卓这么 nb 的么 我司前端移动端都是背锅的 : )
    zsk425
        27
    zsk425  
       2019-05-30 09:31:39 +08:00
    对方也是够没素质的
    另外,最好以后提供接口的时候,在文档里描述下字段取值类型、范围、是否可为 null
    yalin
        28
    yalin  
       2019-05-30 09:33:35 +08:00
    把定义接口定负责人,拖出来,不要技术与技术之间相互伤害
    michaelcheng
        29
    michaelcheng  
       2019-05-30 09:33:54 +08:00
    我们这儿后端是数据库存啥就给你啥,啥都不处理,想自己用的爽,自己整个 BFF 层处理(前端的工作)
    DrPikaduo
        30
    DrPikaduo  
       2019-05-30 09:34:02 +08:00
    @42ll 昨天的小姐姐你好,小姐姐也常来摸鱼了?
    forYou
        31
    forYou  
       2019-05-30 09:34:59 +08:00
    为什么你们的同事都好凶,我们公司氛围就挺和气的
    gouchaoer2
        32
    gouchaoer2  
       2019-05-30 09:36:27 +08:00   ❤️ 2
    这已经是彻底撕破脸了
    说实话我怀疑 LZ 你描述事实省略了一些东西,比如他是不是认为你在别的地方技术能力不行,而这个 null 只是出气的一个导火索,因为在公司这种地方直接当面骂对方的行为,如果不是某一方特别傻逼的情况,无异于职场自杀
    nicevar
        33
    nicevar  
       2019-05-30 09:42:36 +08:00
    不一定是这点问题导致别人暴躁的,如果你经常挖坑,可能这只是最后一根稻草
    流程上来说你们应该有文档约定,尽量减少沟通,直接看文档
    我做客户端的时候如果服务端总是瞎搞,上火了也会怼的,最后急了干脆跟公司说服务端我自己来做,后面公司客户端的接口部分完全由我来做。
    hhhsuan
        34
    hhhsuan  
       2019-05-30 09:46:16 +08:00 via Android
    空字符串,null,还是根本没有,这三者是有语义上的差别的,并不是说哪一种是错的,主要看你们的约定,习惯,具体的场景决定。
    Vegetable
        35
    Vegetable  
       2019-05-30 09:48:31 +08:00   ❤️ 1
    偏听则暗,兼听则明.

    选填参数要添加判断,过滤所有筛选条件,必填参数为空则返回异常,选填参数为空则跳过本条规则,的确不需要做转换,直接判断就行了.

    空包括直接不传和空值(null/"")两种情况,都应该妥善处理.

    在公司对他他人的技术有怨言可能是菜鸡互啄,也可能是大神嫌弃菜鸡,但是一般不会有大神被菜鸡嫌弃的情况.
    keikeizhang
        36
    keikeizhang  
       2019-05-30 10:16:11 +08:00
    之前和算法合作,key 是中文,还有分隔符,不是下划线,是 - ,

    比如这样 北京-海淀区

    呵呵
    springGun
        37
    springGun  
    OP
       2019-05-30 10:21:59 +08:00
    @Vegetable 就是查询条件参数安卓传""要我忽略该条件
    betulac
        38
    betulac  
       2019-05-30 10:22:11 +08:00
    @drush 接口返回 error 不是应该接口先 debug 吗 /滑稽
    exceloo
        39
    exceloo  
       2019-05-30 10:24:13 +08:00
    他自己煞笔呗,前端不判断所有情况还有理了?要是接口挂了是不是还得咆哮为啥接口会挂??
    springGun
        40
    springGun  
    OP
       2019-05-30 10:24:18 +08:00
    @Vegetable 想了想 我应该 validate 参数后抛个异常给他,这样就没这屁事了
    Vegetable
        41
    Vegetable  
       2019-05-30 10:25:48 +08:00
    @springGun 讲道理如果是 string 的话传""是没问题的.这个应该后端做.
    passerbytiny
        42
    passerbytiny  
       2019-05-30 10:25:57 +08:00
    你是不是该离职不好说,但你要主动离职了,对方估计也该滚蛋了。加班时间因为接口问题吵起来,这种环境八成是“稳定”为主。
    Donne
        43
    Donne  
       2019-05-30 10:27:19 +08:00
    让安卓端来讲,可能是另一个故事了。
    passerbytiny
        44
    passerbytiny  
       2019-05-30 10:30:50 +08:00
    @springGun #33 !!!!兄弟,我也想骂你。查询条件 null 和 "" 同时判断是常识,因为查询条件是通过 HTTP 参数传进来的。
    xmx12138
        45
    xmx12138  
       2019-05-30 10:37:29 +08:00
    @k9982874 不嘛,不嘛。人家不要嘛
    hstdt
        46
    hstdt  
       2019-05-30 10:39:02 +08:00 via iPhone
    我更喜欢 null 返回空字符串给我
    springGun
        47
    springGun  
    OP
       2019-05-30 10:44:10 +08:00
    @passerbytiny 那查询一个空字符串的数据怎么办?我也没见 ali 和腾讯的接口会给你忽略掉该条件,要么返回参数检验异常,要么直接返回空的查询结果
    wutiantong
        48
    wutiantong  
       2019-05-30 10:46:17 +08:00
    看楼主后面的回复,好多人前面都理解错了:

    并非客户端要求后端用 null 代替,而是客户端发请求时传了个空字符串,后端(楼主)没做判断。
    tt67wq
        49
    tt67wq  
       2019-05-30 10:48:45 +08:00
    @drush #8 秀还是你秀
    aLazarus
        50
    aLazarus  
       2019-05-30 10:51:23 +08:00 via Android
    还是要做判断的吧…
    joyhub2140
        51
    joyhub2140  
       2019-05-30 10:55:05 +08:00
    空字符串或者 null 值,应该不传,让客户端采取 default 值。
    jiuanzi
        52
    jiuanzi  
       2019-05-30 10:56:54 +08:00 via Android
    伟大都是熬出来的
    passerbytiny
        53
    passerbytiny  
       2019-05-30 10:59:53 +08:00
    @springGun #43 你能给我找出来一个查询“非 null 但空字符串”的需求出来吗?对于你的第二句话,我觉得没必要做深入回复,一句“你去 ali 和 腾讯吧”就足够了。
    janus77
        54
    janus77  
       2019-05-30 11:00:11 +08:00 via iPhone
    如果你没隐瞒别的,那这个安卓有点辣鸡
    你可以直接一句:这接口 ios 用着没问题就你有问题,怪我咯
    huoshanhui
        55
    huoshanhui  
       2019-05-30 11:00:28 +08:00
    解决问题的前提是好好说话。你确定他是这种语气和措辞的话建议你先调教下他。
    yvescheung
        56
    yvescheung  
       2019-05-30 11:05:33 +08:00   ❤️ 1
    为什么你要离职?你应该想办法让他离职
    kingzt
        57
    kingzt  
       2019-05-30 11:08:08 +08:00
    空字符串和 null 语义本来就不一样, 直接怼回去
    springGun
        58
    springGun  
    OP
       2019-05-30 11:13:01 +08:00
    @passerbytiny
    elasticsearch 查询文档中字段为""的需求又不是没有
    kevin1852
        59
    kevin1852  
       2019-05-30 11:14:57 +08:00
    应该是 API 里的可空请求参数没有传或者传的“”,bind parameter 时自动转成了“”,然后查询的时候只判断了是不是 null,导致查询不到结果吧?
    kuyuzhiqi
        60
    kuyuzhiqi  
       2019-05-30 11:16:37 +08:00
    做 Android 的表示会自己用 TextUtils.isEmpty()判断,这种 Android 可以走了
    sanqian
        61
    sanqian  
       2019-05-30 11:19:37 +08:00
    怼回去啊
    kuyuzhiqi
        62
    kuyuzhiqi  
       2019-05-30 11:22:17 +08:00
    @gouchaoer2 确实,这么点东西不至于说这么重的话
    biantaoGG
        63
    biantaoGG  
       2019-05-30 11:25:34 +08:00
    表示这种难道后端不应该也做吗,本人安卓开发,这种接口一般调之前都会用 TextUtils.isempty 判断,但是后端也应该对非必须字段做判空处理啊,并且很显然后端更应该做啊,你的接口又不一定只有我一个人调,防止接口报错难道不应该做好各种判空?
    zek
        64
    zek  
       2019-05-30 11:27:06 +08:00 via Android
    公司规定要把空字符串转成 null? 没有就按你的规矩来,还惯着他不成
    mmsky
        65
    mmsky  
       2019-05-30 11:27:42 +08:00
    这个是谁强势谁有理。我服务端的,有时候有些数据需要处理一下,不想吵架的时候了,就处理好再返回。想吵架的时候,就懒得处理,直接返回
    passerbytiny
        66
    passerbytiny  
       2019-05-30 11:30:58 +08:00   ❤️ 1
    @hstdt #42
    @joyhub2140 #47
    @janus77 #50
    @kingzt #53
    @kuyuzhiqi #56
    @sanqian #57
    请先把你们回复楼层之前的楼主的回复看完。是查询接口的入口参数没有把 null 跟 "" 合并,不是出口参数没把 "" 转成 null。
    biantaoGG
        67
    biantaoGG  
       2019-05-30 11:31:03 +08:00
    楼上的老哥们怎么都理解成了人家要把""转成 null 啊, 很明显是客户端穿了个""参数到服务端,让服务端吧""当成 null 一样的无数据处理,wfl
    kuyuzhiqi
        68
    kuyuzhiqi  
       2019-05-30 11:33:42 +08:00
    @passerbytiny 那也差不多,Android 端为啥不做 TextUtils.isEmpty()判断再请求,😄
    wangcansun
        69
    wangcansun  
       2019-05-30 11:33:44 +08:00
    null 和空字符串是两件事啊
    liukanshan
        70
    liukanshan  
       2019-05-30 11:38:56 +08:00
    还没看出来吗 这个已经不是接口对错的问题了 而是对你个人有一些看法 。

    协议应该约定好 空字符串转换成 null 会更容易导致空指针
    甚至在一些书里面为了避免空指针都采用这种写法

    return null => return new ArrayList()

    谁对谁错应该很清楚吧 你也没有必要和同事争论 你同事非蠢即坏。

    另外为什么要离职 他让你不爽 你也可以让他不爽。
    wl904836468
        71
    wl904836468  
       2019-05-30 11:41:29 +08:00
    你应该继续挖更大的坑,恶心死他,到时候直接甩锅到他头上。他还怼你的话,怂啥,下班别走
    passerbytiny
        72
    passerbytiny  
       2019-05-30 11:51:38 +08:00
    假如界面长这样(字符画请复制到文本编辑器中并采用等宽字体查看):
    +-----+
    A |abc |
    +-----+

    +-----+
    B | |
    +-----+

    那么,此时 B 是 null 还是 ""
    passerbytiny
        73
    passerbytiny  
       2019-05-30 11:52:58 +08:00
    @kuyuzhiqi #64 见上面。这不是 TextUtils.isEmpty() 能解决的事
    TobiahShaw
        74
    TobiahShaw  
       2019-05-30 11:57:58 +08:00
    建议定义接口的时候,定义是否可空,例如文档定义变量类型的时候,Integer Nullable ; int NotNull ;
    TobiahShaw
        75
    TobiahShaw  
       2019-05-30 12:00:18 +08:00
    建议工作的时候还是要以解决问题为目的,而不是互相伤害,这样他出发点不是解决问题抱怨的时候,就会显得他很 low (或许吧,至少你这么想不会让自己很尴尬,而去理性分析解决方案)。
    主要还是建议公事公办。
    zjddp
        76
    zjddp  
       2019-05-30 12:00:22 +08:00
    @42ll 好巧,又见面了
    jxf2008
        77
    jxf2008  
       2019-05-30 12:01:57 +08:00
    下班后直接找到真人 PK,然后双双被开除

    话说就算走也要拉个垫背的吧
    ben1024
        78
    ben1024  
       2019-05-30 12:16:24 +08:00
    怼回去
    birdrally
        79
    birdrally  
       2019-05-30 12:23:53 +08:00 via iPhone
    他说的前半句在理,有则改之,走不是必须的
    mrdemonson
        80
    mrdemonson  
       2019-05-30 12:31:13 +08:00 via Android
    对象的 null 和""是完全不同的概念,好比领导安排了研究任务,没做和做了但没研究出来,完全是两个问题。对接时候,要做好接口规范,用文档白纸黑子写出来,避免接锅,容易追责。
    66beta
        81
    66beta  
       2019-05-30 12:37:29 +08:00 via Android
    不是技术问题,是情商问题

    如果他对别人不这样,你自己也查查原因
    wanghaa
        82
    wanghaa  
       2019-05-30 12:47:10 +08:00 via Android
    这尼玛是服务端没做校验,一群人怎么理解的,真服了
    tabris17
        83
    tabris17  
       2019-05-30 12:50:07 +08:00
    你跟他谁比较强壮?
    wanghaa
        84
    wanghaa  
       2019-05-30 13:00:18 +08:00 via Android
    @passerbytiny 一群瞎子,我佛了
    ThomasZ
        85
    ThomasZ  
       2019-05-30 13:11:33 +08:00 via Android
    这前端怼后端。。。 凭什么转 null
    chairuosen
        86
    chairuosen  
       2019-05-30 13:12:48 +08:00
    我理解是不是类似搜索接口,query?keyword= ,结果 keyword=''没返回结果,客户端期待返回全部内容。
    如果是,是你的问题。
    tt67wq
        87
    tt67wq  
       2019-05-30 13:43:39 +08:00
    忍一时越想越气,退一步越想越亏
    biantaoGG
        88
    biantaoGG  
       2019-05-30 13:59:46 +08:00
    @wanghaa 这群人是真的瞎,整个评论就少数几个能说到点子上的
    huage2580
        89
    huage2580  
       2019-05-30 14:13:49 +08:00
    8 说了,我觉得 86L 说的对
    winglight2016
        90
    winglight2016  
       2019-05-30 14:37:05 +08:00
    lz 无需反驳啊,后台是需要处理这种情况的——你不能假定传过来的值“全部”是经过校验的。http 协议里,参数的等号后面什么都没有就表示 java 里的 null,前端这么搞毫无问题。

    至于走不走,我是觉得不至于这么点小事儿就要离职吧,有则改之,无则加勉啊。每个人遇到自己的知识盲点都要离职,这项目就没法做啦。
    amon
        91
    amon  
       2019-05-30 14:42:23 +08:00
    判断参数不等于 null,并且不等于空字符串,才将参数设置到查询条件里面。
    沟通不就完了,让他气到骂人估计你当时也挺拽的~
    wangxiaoaer
        92
    wangxiaoaer  
       2019-05-30 14:45:41 +08:00   ❤️ 1
    @RicardoY #10 空值 null 值在 json 序列化的时候可以过滤掉。
    Gakho
        93
    Gakho  
       2019-05-30 15:00:34 +08:00
    Python 就这点好, 一个 if xxx 就能同时去掉了 None 跟空字符串了🙃
    loryyang
        94
    loryyang  
       2019-05-30 15:07:20 +08:00
    空和 null 就不是一个东西啊,得看具体业务定义,需要的到底是什么,这个属于定接口的问题。不是水平问题
    pcatzj
        95
    pcatzj  
       2019-05-30 15:10:29 +08:00 via Android
    即使楼主有理,这种反讽也让人膈应
    yanyuyu89757
        96
    yanyuyu89757  
       2019-05-30 15:18:13 +08:00
    有这种同事,直接给他一个大嘴巴子
    shx1943
        97
    shx1943  
       2019-05-30 15:28:09 +08:00
    我上一家公司老板在背后说我技术垃圾,连他上学时候技术都不如,然后第二天招聘经验三年的技术,我干了不到一年,去他那干了不到一个月,把三个新人全部踢掉
    runtu2019
        98
    runtu2019  
       2019-05-30 15:28:19 +08:00
    @chairuosen #86
    应该是这么个理,后端根据可选参数过滤出结果,安卓传了“”,后端没做好验证去除可选参数或者判空,直接根据“”过滤的结果出问题了
    这真的是个低级错误了,最后发现是你在接受传参时没做好验证,要我我也抓狂
    但是对方这种方法肯定是不可取的,顶多开玩笑叫请吃顿饭算了

    有点自信,慢慢积累经验吧,查询数据库的时候多考虑传入字符串的可能性

    加油,共勉
    loy6491
        99
    loy6491  
       2019-05-30 16:42:50 +08:00
    可能他是培训班的中等生。
    whl619969187
        100
    whl619969187  
       2019-05-30 16:44:04 +08:00
    难道他是培训班的优等生?
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4054 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:15 · PVG 13:15 · LAX 21:15 · JFK 00:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.