新来的外包同事,这代码,我??? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
LeroyMooney
V2EX    程序员

新来的外包同事,这代码,我???

  •  
  •   LeroyMooney 2021-03-19 09:25:12 +08:00 31472 次点击
    这是一个创建于 1666 天前的主题,其中的信息可能已经有所发展或是发生改变。
    public List<IssueStatistics> getIssueStatistics() { return issueStatistics == null ? null : issueStatistics; } 
    第 1 条附言    2021-03-19 15:31:56 +08:00
    楼下好像蛮多人指责我的
    1 、关于标题中的“外包”一词:并没有歧视的意思,跟公司其他外包同事相处的很愉快。标题中的“外包”是不是戳着某些人伤口了?
    2 、关于说我没有当面指出的:这是我跟他说了两次之后修改的版本
    186 条回复    2021-03-22 08:56:52 +08:00
    1  2  
    Leonard
        1
    Leonard  
       2021-03-19 09:25:45 +08:00
    哈哈哈哈哈哈
    quan01994
        2
    quan01994  
       2021-03-19 09:27:03 +08:00   7
    别问,问就是按代码量计费的。
    legiorange
        3
    legiorange  
       2021-03-19 09:27:16 +08:00 via Android
    mazai
        4
    mazai  
       2021-03-19 09:27:16 +08:00
    脱裤子放屁,多此一举
    Guidoo
        5
    Guidoo  
       2021-03-19 09:27:21 +08:00
    哈哈 这代码。。 强行封装
    MIUIOS
        6
    MIUIOS  
       2021-03-19 09:27:41 +08:00
    笑死我了 这就是脱裤子放屁啊
    bzw875
        7
    bzw875  
       2021-03-19 09:28:38 +08:00
    可能是不知不觉摸了 1 天鱼,随便写几行代码提交吧
    liuxey
        8
    liuxey  
       2021-03-19 09:28:58 +08:00
    public List<IssueStatistics> getIssueStatistics() {
    return issueStatistics == null ? new ArrayList<>() : issueStatistics;
    }

    这样还能说得过去一点
    zhuangzhuang1988
        9
    zhuangzhuang1988  
       2021-03-19 09:29:35 +08:00 via Android
    正常啊,这代码
    wxsm
        10
    wxsm  
       2021-03-19 09:30:39 +08:00
    谁都有脑抽的时候,如果只是一行还好
    huage2580
        11
    huage2580  
       2021-03-19 09:31:07 +08:00
    问一下他,怎么写出这么秀的代码的
    murmur
        12
    murmur  
       2021-03-19 09:31:17 +08:00
    getter/setter 而已。函数的封装并没有问题
    CalistaK
        13
    CalistaK  
       2021-03-19 09:31:26 +08:00
    这代码不报错呀,逻辑上好像也没问题(手动狗头
    shiji
        14
    shiji  
       2021-03-19 09:31:45 +08:00   4
    有的时候也许 null 的返回值还没有沟通好,先这么放着,等定下来了直接改。
    jwenjian
        15
    jwenjian  
       2021-03-19 09:32:40 +08:00 via iPhone
    反正也会被 JVM 优化掉,不影响
    AA5DE3F034ACCB9E
        16
    AA5DE3F034ACCB9E  
       2021-03-19 09:32:51 +08:00
    学到了
    zhuweiyou
        17
    zhuweiyou  
       2021-03-19 09:33:50 +08:00   3
    有可能之前还有别的条件和代码, 然后删掉了, 只剩下这一行.
    liudaolunhuibl
        18
    liudaolunhuibl  
       2021-03-19 09:34:21 +08:00   2
    @liuxey 1 、新建 ArrayList 的时候最好指定容量,这里就表示一个空的所以 new Arraylsit ( 1 )就可以了,2 、new 一个 arrayList 的时候最好静态方法,用谷歌的 guava:Lists.newArrayListwithCatity(1)
    wangwei1025
        19
    wangwei1025  
       2021-03-19 09:35:06 +08:00
    我还写过
    if (condition){
    A=B;
    }else{
    A=B
    }

    哈哈哈哈,有时候确实会脑子抽了
    zhuweiyou
        20
    zhuweiyou  
       2021-03-19 09:35:28 +08:00
    比如 return issueStatistics == null || issueStatistics.length == 0 ? null : issueStatistics;
    后来不需要 issueStaistics.length == 0 了, 只删掉了一部分. 忘记改成返回了
    codiy
        21
    codiy  
       2021-03-19 09:35:31 +08:00
    牛逼了
    lovelive1024
        22
    lovelive1024  
       2021-03-19 09:38:56 +08:00
    if (true) {
    xxx
    }
    anonydmer
        23
    anonydmer  
       2021-03-19 09:39:13 +08:00   11
    @liuxey @liudaolunhuibl 我们一直是要求 null 时候返回 Collections.emptyList(), 这个方法返回的是不可变对象,无法向里面写内容;不然返回一个 ArryList() 别人往里面写内容了可能会引起难以排查的 bug
    vicalloy
        24
    vicalloy  
       2021-03-19 09:39:49 +08:00
    和这个比起来 怎么样
    #!/bin/python3
    def toJSON(self):
      xxx = []
     ...
      return json.loads(json.dumps(xxx))
    kop1989
        25
    kop1989  
       2021-03-19 09:42:05 +08:00
    get/set 在默认情况下本来也只是返回 this.xxx ,逻辑上我个人认为并没有错误。
    而且更可能的情况下是这块代码有过改动或者未来有预计的改动,所以和 ide 的默认写法不同。

    这就像是:同样表达去哪玩,有的人说“你去 xxx 玩”,而有的人说“你来 xxx 玩”。这俩表达的意思一致,只不过是表达者主体的情景不同。
    drydiy
        26
    drydiy  
       2021-03-19 09:42:24 +08:00   1
    本来外包就处于鄙视链的底端,你这还强调一下。欣慰得是,评论区都很很友善。
    我在现同事的代码中也看到这种脱裤子放屁的赋值,我默默得修复了。
    工作中难免会有脑子短路的时刻。
    viator42
        27
    viator42  
       2021-03-19 09:42:46 +08:00
    代码写的还挺讲究,虽然没啥用
    66beta
        28
    66beta  
       2021-03-19 09:43:49 +08:00   16
    留下可以扩展的口子,是个高手!
    Felldeadbird
        29
    Felldeadbird  
       2021-03-19 09:44:21 +08:00
    不明白这什么有的? 写代码总有脑抽的时候。
    至少得再列出别得。
    lagoon
        30
    lagoon  
       2021-03-19 09:44:42 +08:00
    考虑到我自己也经常写垃圾代码,再考虑到这人的垃圾代码写的还挺工整。
    我决定默不作声。
    sutra
        31
    sutra  
       2021-03-19 09:45:01 +08:00
    @liudaolunhuibl 不应该是 Collections.emptyList() 吗?哈哈
    yamasa
        32
    yamasa  
       2021-03-19 09:46:49 +08:00
    如果想规避 npe,直接 Optional.ofNullable(issueStatistics).orElse(new ArrayList<>(1)); 就好了。
    CodeGroup
        33
    CodeGroup  
       2021-03-19 09:48:41 +08:00
    这算什么,我这还有 list.size()>=0 的判断,我寻思数组的长度也没有负的吧
    arthas2234
        34
    arthas2234  
       2021-03-19 09:49:39 +08:00
    @shiji +1
    有可能是还不确定要如何处理,先原路返回了,在这里先留个位置等后面在改
    不过应该要打个 TODO,怕后面忘记了
    lonelymarried
        35
    lonelymarried  
       2021-03-19 09:50:11 +08:00
    这是写 oc 写多了,怕 null 崩溃所以判断一下?
    LeroyMooney
        36
    LeroyMooney  
    OP
       2021-03-19 09:50:18 +08:00
    我随便再贴几行吧
    ```
    private String nodeName;
    private int issueTotal ;
    private int countersign;

    xxService.execl(projectNum);

    xxService.selectid();

    public String s(int a, int b) {
    return (Math.round((((a - b) * 1.0f) / a) * 100) + "%");
    }

    public String D(int a, int b) {
    return (Math.round(a * 1.0f / b * 100) + "%");
    }
    ```
    LeroyMooney
        37
    LeroyMooney  
    OP
       2021-03-19 09:51:34 +08:00
    回复没用到 Markdown,大家将就看下吧
    LeroyMooney
        38
    LeroyMooney  
    OP
       2021-03-19 09:53:43 +08:00
    其他太长的就不贴出来了
    lwlizhe
        39
    lwlizhe  
       2021-03-19 09:54:00 +08:00
    容老夫想想怎么圆这块……

    或许这块是参考双重检测的单例模式呢,只不过少了关键字和双重检测而已

    好像圆不下去~~~
    liudaolunhuibl
        40
    liudaolunhuibl  
       2021-03-19 09:54:34 +08:00
    @sutra 对 哦,忘记了
    rocksolid
        41
    rocksolid  
       2021-03-19 09:55:54 +08:00
    这是按代码量算工资么
    liudaolunhuibl
        42
    liudaolunhuibl  
       2021-03-19 09:56:13 +08:00
    @anonydmer 但是可能这个方法返回的 list 外部还要继续 add 呢,难免会有这种业务的,或者说现在没有后面加上了,然后哪个人没有看这个方法的代码不就报错了吗,
    xinyang5302677
        43
    xinyang5302677  
       2021-03-19 09:56:33 +08:00
    你怎么戾气这么大?你是 985 吗?
    zzzmh
        44
    zzzmh  
       2021-03-19 09:57:34 +08:00   5
    你给他改成

    public List<IssueStatistics> getIssueStatistics() {
    return issueStatistics == null ? issueStatistics == null ? issueStatistics == null ? issueStatistics == null ? issueStatistics == null ? null : issueStatistics : issueStatistics : issueStatistics : issueStatistics : issueStatistics;
    }

    互相伤害
    [doge]
    xuanbg
        45
    xuanbg  
       2021-03-19 09:57:44 +08:00
    有可能不是手写的,沙雕生成器生成的。
    atonku
        46
    atonku  
       2021-03-19 09:58:27 +08:00
    不然一天一行代码也没有
    sevenzhou1218
        47
    sevenzhou1218  
       2021-03-19 10:00:03 +08:00
    个人觉得没问题 getter?
    no1xsyzy
        48
    no1xsyzy  
       2021-03-19 10:00:09 +08:00
    @anonydmer 那我就随便地不负责任地推荐一下 Haskell:想改? unsafe 吧。



    说起来,也可能存在显式表示此处可返回 null 的情况
    zhongrs232
        49
    zhongrs232  
       2021-03-19 10:01:04 +08:00   2
    这代码有个解释:如果我和女票意见一致,那么听我的,否则听女票的
    然而我并没有女票,sigh~
    endlessJ219
        50
    endlessJ219  
       2021-03-19 10:01:25 +08:00
    感觉楼主有点攻击,这个人水平不高不能赖外包啊
    xuanbg
        51
    xuanbg  
       2021-03-19 10:01:25 +08:00
    @LeroyMooney 这!!! s d 实锤了……
    SurfaceView
        52
    SurfaceView  
       2021-03-19 10:02:04 +08:00
    这代码有 bug 吗
    limuyan44
        53
    limuyan44  
       2021-03-19 10:03:00 +08:00   13
    我刚毕业的时候就喜欢吐槽别人代码,后来我发现所有人的代码里都有垃圾包括我自己,就淡然多了,没有一个程序员的代码经得起吐槽,如果谁觉得有,请把 github 贴出来让大家看看。
    lvxiaomao
        54
    lvxiaomao  
       2021-03-19 10:06:47 +08:00
    你就知足吧,起码不是
    if (list == null) {return null;} else {return list;}
    Azer
        55
    Azer  
       2021-03-19 10:08:14 +08:00
    看过一个
    if(checkbox.checked == true && i == 1)
    sonxzjw
        56
    sonxzjw  
       2021-03-19 10:10:36 +08:00
    要是我,可以的话我会加 100 个空行。那我的代码量行数就蹭蹭蹭...想想就美
    msg7086
        57
    msg7086  
       2021-03-19 10:12:47 +08:00
    我见过 if (IsXXX() == true) { return true; } else { return false; } 的。
    SyncWorld
        58
    SyncWorld  
       2021-03-19 10:13:46 +08:00
    @limuyan44 垃圾代码谁都写过~ 我现在回头改我以前的代码都得看半天
    fengpan567
        59
    fengpan567  
       2021-03-19 10:15:19 +08:00
    又不是不能用!!
    lskjdfgl
        60
    lskjdfgl  
       2021-03-19 10:15:34 +08:00
    if (result == true) {return true;} else {return false;}
    mahone3297
        61
    mahone3297  
       2021-03-19 10:17:05 +08:00   1
    好简洁的写法。。。应该这样写

    ```
    public List<IssueStatistics> getIssueStatistics() {
    // 如果为 null,则返回 null
    if (issueStatistics == null) {
    return null;
    } else {
    // 如果不为 null,则返回本来的值
    return issueStatistics;
    }
    }
    ```
    ljzxloaf
        62
    ljzxloaf  
       2021-03-19 10:20:46 +08:00
    pojo 不都这样吗?如果不是 pojo,他之前可能是写 c/c++的
    webcoder
        63
    webcoder  
       2021-03-19 10:21:48 +08:00   1
    @SyncWorld 回去看半年前的代码,这是哪个傻 x 写的垃圾代码,哦是我啊,那没事了。
    dengji85
        64
    dengji85  
       2021-03-19 10:23:58 +08:00
    真的高深莫测。你们这些凡人看不懂吧?还笑别人
    q9OxQg
        65
    q9OxQg  
       2021-03-19 10:24:57 +08:00 via Android
    我不懂编程,不知道大家笑什么。但是我也还是笑了
    celeron533
        66
    celeron533  
       2021-03-19 10:27:45 +08:00
    可能是为了未来的扩展性(逃
    daimen
        67
    daimen  
       2021-03-19 10:27:57 +08:00
    不出 bug 的代码就是好代码,再说了,编译器会优化的
    bleepbloop
        68
    bleepbloop  
       2021-03-19 10:28:55 +08:00
    也许是被资本家剥削得太狠,精神状态不大好呢?
    thtznet
        69
    thtznet  
       2021-03-19 10:29:02 +08:00
    从经济学角度看,这个社会大部分的问题其本质都是经济问题
    tinyuu
        70
    tinyuu  
       2021-03-19 10:29:04 +08:00   2
    挺好的 逻辑清晰,封装良好,设计充分,重构方便,拥抱未来。
    liuxey
        71
    liuxey  
       2021-03-19 10:29:49 +08:00
    @anonydmer #23
    @liudaolunhuibl #18

    感谢提醒,写惯了 immutable 语言,Java 都快成伪代码了
    LiubaiQ
      &nsp; 72
    LiubaiQ  
       2021-03-19 10:30:58 +08:00
    @daimen 代码不规范,用不了半年就难以维护了。。。
    daimen
        73
    daimen  
       2021-03-19 10:33:03 +08:00
    @LiubaiQ 楼主就是来找相对于外包的优越感的,一两行代码能看出来个啥,我也是搞不懂了。
    iceneet
        74
    iceneet  
       2021-03-19 10:33:04 +08:00
    ???迷惑主义
    cat007
        75
    cat007  
       2021-03-19 10:33:43 +08:00
    没有 bug 的代码就是好代码
    jianpeng957
        76
    jianpeng957  
       2021-03-19 10:37:36 +08:00
    有种为了炫技而炫技的感觉
    QRan
        77
    QRan  
       2021-03-19 10:39:13 +08:00
    @lagoon 我也是这样想的,我自己菜我也就不发言了 ^_^哈哈哈
    UBcai
        78
    UBcai  
       2021-03-19 10:39:40 +08:00
    贴的第一个代码,就是按照我这里需求来说,有些 list 是要返回 null,有些需要 new arraylist<>()(看了上面大佬的写法,我准备改为 Collections.emptyList()),这样写就需要看前端需要什么了,然后好改。 贴的第二个代码估计我太菜才一年多 java,我还是没看到哪里有问题?各位大佬有知道的给我分析分析么。
    wennew
        79
    wennew  
       2021-03-19 10:39:46 +08:00
    这么闲吗,我从来不看别人代码,如果你是他上司就让他 checkstyle 下呗
    VictorJing94
        80
    VictorJing94  
       2021-03-19 10:40:31 +08:00
    字母数计 kpi?
    treizeor
        81
    treizeor  
       2021-03-19 10:41:42 +08:00
    很正常啊,定义私有变量 issueStatistics,然后编辑器生成的 setter/getter 基本都是这样
    Blanke
        82
    Blanke  
       2021-03-19 10:43:31 +08:00
    应该是插件自动做的处理
    MineDog
        83
    MineDog  
       2021-03-19 10:46:24 +08:00
    楼上说这么写正常的都是认真的?这明显是无效代码啊
    zhoulifu
        84
    zhoulifu  
       2021-03-19 10:47:49 +08:00
    面向代码量编程
    sjzzz
        85
    sjzzz  
       2021-03-19 10:48:36 +08:00
    有什么理由要进入这个方法,为啥不直接拿。这个代码的价值在哪?多了 3 行代码么?
    0x663
        86
    0x663  
       2021-03-19 10:49:02 +08:00   4
    @66beta
    低情商:脱裤子放屁的封装方法
    高情商:留下可以扩展的口子,是个高手!
    Oktfolio
        87
    Oktfolio  
       2021-03-19 10:51:55 +08:00
    见的多了,转岗过来半年了吧,他的工资应该至少是我的两倍。

    https://sm.ms/image/LDUw4SofCHXZ9Bi
    https://sm.ms/image/qrhiKj19LI6MmG4
    https://sm.ms/image/y2dx15UNubhknvf
    Oktfolio
        88
    Oktfolio  
       2021-03-19 10:55:00 +08:00
    他们写的代码全是飘黄的,感觉 IDE 的提示对他们来说根本没有用
    idealhs
        89
    idealhs  
       2021-03-19 10:55:41 +08:00
    有问题吗
    tairan2006
        90
    tairan2006  
       2021-03-19 10:56:56 +08:00   1
    说没问题的建议转行
    Asuka0947
        91
    Asuka0947  
       2021-03-19 10:58:36 +08:00   2
    这行代码会影响到你吗?会牵连到你吗?如果没有,大可不必管它,打工人没必要看不起打工人
    Sydney7106
        92
    Sydney7106  
       2021-03-19 11:11:06 +08:00
    @ily433664 曾经有那么一段时间, 喜欢这样写. 只是为了分隔代码又不想提成方法~~
    hodur
        93
    hodur  
       2021-03-19 11:12:49 +08:00
    @sjzzz 阿里的朋友?
    fenghengzhi
        94
    fenghengzhi  
       2021-03-19 11:18:01 +08:00
    @vicalloy 应该只是想深拷贝一下吧
    treizeor
        95
    treizeor  
       2021-03-19 11:19:24 +08:00
    @sjzzz 私有变量,外部必须通过 public 方法拿有问题吗
    Godikov
        96
    Godikov  
       2021-03-19 11:19:24 +08:00   2
    刚入行时也经常瞧不上别人代码,时间久了这种代码都不会让我觉得蠢,甚至觉得可爱。
    LeroyMooney
        97
    LeroyMooney  
    OP
       2021-03-19 11:20:29 +08:00
    @drydiy
    @endlessJ219
    @limuyan44
    @daimen
    @wennew
    统一回复一下,不包括 pojo 和 mapper 层,600 多行代码写了一星期,规范啥的先不提了,出现了 5 个问题,匿了
    rb6221
        98
    rb6221  
       2021-03-19 11:22:15 +08:00
    可能第一个 null 以前不是 null 是一个空 list,后面需求变动,为了方便就把他改成 null 了。问题不大
    leavic
        99
    leavic  
       2021-03-19 11:28:15 +08:00
    这 tm 写成 if else 还能多几行呢。
    lozzow
        100
    lozzow  
       2021-03-19 11:28:41 +08:00
    原地 TP
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5145 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 09:18 PVG 17:18 LAX 02:18 JFK 05:18
    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