V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LeroyMooney
V2EX  ›  程序员

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

  •  
  •   LeroyMooney · 2021-03-19 09:25:12 +08:00 · 30308 次点击
    这是一个创建于 1343 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
    哈哈 这代码。。 强行封装
    totoro52
        6
    totoro52  
       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;
    后来不需要 issueStatistics.length == 0 了, 只删掉了一部分. 忘记改成返回了
    codiy
        21
    codiy  
       2021-03-19 09:35:31 +08:00
    牛逼了
    ily433664
        22
    ily433664  
       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
        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 个问题,匿了
    janus77
        98
    janus77  
       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   ·   实用小工具   ·   3708 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 00:55 · PVG 08:55 · LAX 16:55 · JFK 19:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.