昨天加班被安卓端怼了,说我连培训班差生都不如,我是不是该离职? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
springGun
V2EX    问与答

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

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

    我是做 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
    还是要做判断的吧…
    nxforce
        51
    nxforce  
       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 和 腾讯吧”就足够了。
    rb6221
        54
    rb6221  
       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
    即使楼主有理,这种反讽也让人膈应
    tr>
    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     FQ     Solana     866 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 20:31 PVG 04:31 LAX 13:31 JFK 16:31
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86