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

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

  •  
  •   LeroyMooney · 2021-03-19 09:25:12 +08:00 · 30320 次点击
    这是一个创建于 1348 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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  
    vicalloy
        101
    vicalloy  
       2021-03-19 11:30:03 +08:00
    @fenghengzhi 我开始也以为是深拷贝,确认后发现不是。结合其他代码,应当只是单纯的认为 Python 里的“Json 对象”和 dict/list 不是同一种东西。
    Colis
        102
    Colis  
       2021-03-19 11:30:07 +08:00   ❤️ 2
    可能之前想返回一个空的 List,后来需求变更为返回一个 null 。保留这么写方便以后再改回去。
    KarmaWu
        103
    KarmaWu  
       2021-03-19 11:34:18 +08:00
    Optional.ofNullable(issueStatistics).orElse(Collections.EMPTY_LIST);
    godloveplay
        104
    godloveplay  
       2021-03-19 11:46:42 +08:00
    @thtznet #69 单纯对这句话,你手里拿个锤子,看什么都是钉子。。
    QingStone
        105
    QingStone  
       2021-03-19 11:49:32 +08:00 via iPhone
    原地打转!
    lakehylia
        106
    lakehylia  
       2021-03-19 11:56:19 +08:00
    反正编译器会优化的,编译器又不傻
    JasonTsang
        107
    JasonTsang  
       2021-03-19 11:57:12 +08:00   ❤️ 1
    其实还好 ,可能暂时 状态 ,一般这种会多处调用 ,封闭成方法,如果这里被调用 1000 次,下次这里逻辑有变。只要改这里就可以了。当然 现在的代码是没意义的 直接 return issueStatistics 就可以了。但习惯是很好的。
    digimoon
        108
    digimoon  
       2021-03-19 11:58:09 +08:00
    可能原来是 A,后来改成 B,突然又要改成 C,想着以后估计还得弄成 D
    ssssstest
        109
    ssssstest  
       2021-03-19 12:00:56 +08:00
    虽然但是,没必要强调外包。非得加重歧视吗
    belin520
        110
    belin520  
       2021-03-19 12:03:32 +08:00 via iPhone   ❤️ 1
    内卷,还要强调外包,这也不是不能用
    PopRain
        111
    PopRain  
       2021-03-19 12:09:04 +08:00
    一周 600 行代码,搁到国外算高效了。。。。5 个错误,你选了一个最没有必要、不是错误的错误吐槽。。。。
    smilenceX
        112
    smilenceX  
       2021-03-19 12:10:27 +08:00
    谁还没写过几行烂代码了,这点小事,没必要专门发个帖。
    shifttacn
        113
    shifttacn  
       2021-03-19 12:15:50 +08:00
    抄的代码
    第二个 null 是后改的


    我见过比这个还复杂的
    dingdangnao
        114
    dingdangnao  
       2021-03-19 12:18:46 +08:00   ❤️ 4
    msaionyc
        115
    msaionyc  
       2021-03-19 12:31:18 +08:00   ❤️ 6
    也许有一天会有人贴出你的代码发帖:
    新来的专科 /本科同事,这代码,我???
    新来的非 985 同事,这代码,我???
    新来的非博士同事,这代码,我???
    新来的大龄同事,这代码,我???
    Jinnn
        116
    Jinnn  
       2021-03-19 12:31:59 +08:00   ❤️ 4
    新来的外包同事: 你歧视外包?
    新来的同事: 你歧视新来的?
    同事: 你歧视同事?
    zeropercenthappy
        117
    zeropercenthappy  
       2021-03-19 12:35:09 +08:00 via Android
    @dingdangnao 哈哈哈哈哈笑得我忘了代码写到哪了
    yousabuk
        118
    yousabuk  
       2021-03-19 12:35:49 +08:00 via iPhone
    你们工资一样吗?
    comoyi
        119
    comoyi  
       2021-03-19 12:37:54 +08:00
    这个命名有问题,歧义
    EscYezi
        120
    EscYezi  
       2021-03-19 12:49:18 +08:00 via iPhone
    这种写法 ide 会有黄色提示的,如果是之前有别的逻辑删了一些代码,不把告警消除了也说不过去啊
    tuomasi
        121
    tuomasi  
       2021-03-19 13:03:41 +08:00
    人家写的不好可以提醒一下,还跑论坛上 diss,外包何必为难外包,没准你在甲方眼里:看,狗咬狗
    Arthit
        122
    Arthit  
       2021-03-19 13:05:07 +08:00
    issueStatistics = issueStatistics ?? new List<IssueStatistics>();
    wiluxy
        123
    wiluxy  
       2021-03-19 13:05:48 +08:00   ❤️ 2
    文人相轻太正常了,发到论坛里,让大伙批斗一番。
    我觉得楼主要是能和这个外包同事指出问题所在,那就更好了
    ho121
        124
    ho121  
       2021-03-19 13:07:37 +08:00 via Android
    @msg7086 这种有时候会这么写,比如当 IsXXX()可以返回 null 的时候
    mingtdlb
        125
    mingtdlb  
       2021-03-19 13:21:26 +08:00
    这也要发上来?显得你牛逼吗?没什么深仇大恨,背后说人家不好....
    sinopf
        126
    sinopf  
       2021-03-19 13:28:36 +08:00
    外包项目嘛,后期不出点儿 bug,怎么心安理得的收服务费?
    BigBunny
        127
    BigBunny  
       2021-03-19 13:33:39 +08:00
    估计是本来有封装逻辑 后面因为什么原因去掉了
    chanchan
        128
    chanchan  
       2021-03-19 13:35:54 +08:00
    你这几张图太不痛不痒了,说实话
    shyling
        129
    shyling  
       2021-03-19 13:36:53 +08:00
    用嘴不能解决吗,还要发论坛批斗一下?
    jzmws
        130
    jzmws  
       2021-03-19 13:41:59 +08:00
    @ily433664 这种代码会在测试时候用 写一 不想动下面的代码 ,强制在上面执行 哈哈哈哈哈哈
    jzmws
        131
    jzmws  
       2021-03-19 13:46:16 +08:00
    @sutra 用 null 或者 Collections.emptyList() 都是可以的 , 个人更倾向用 null , Collections.emptyList() 他说静态变量不可变的, 要不然就要先判断 null 在判断 isEmpty , 大部分人空都习惯放回 null 二不会放回 一个空对象
    jzmws
        132
    jzmws  
       2021-03-19 13:49:34 +08:00
    外包不如🐕 能不去做外包就不要去, 夹在中间两边都歧视 . 出了问题都是外包的原因, 用最少的代价干着最多的活 .
    jsjgjbzhang
        133
    jsjgjbzhang  
       2021-03-19 14:08:33 +08:00
    楼主你是他领导么?我感觉也没多大问题啊,当面沟通下,拿论坛来贴大字报反倒显得小气了点
    ldlood
        134
    ldlood  
       2021-03-19 14:26:07 +08:00
    有什么当面指出,来论坛背后说别人,我觉得你也不咋样
    sakura1
        135
    sakura1  
       2021-03-19 14:31:11 +08:00
    这有点搞啊,还见过这个
    if(...){
    return true
    }else{
    return false
    }
    7gugu
        136
    7gugu  
       2021-03-19 14:38:36 +08:00 via iPhone
    凑活着用吧,看到就修复一下,反正也不是什么大不了的事,总会写着写着就短路的嘛🤣
    Smash
        137
    Smash  
       2021-03-19 14:48:09 +08:00
    @shiji #14 不要在编码阶段考虑太多无意义的封装,百分之 99 的概率,这行代码都不会动了,最后成为屎山。
    oldmanong
        138
    oldmanong  
       2021-03-19 15:12:33 +08:00 via iPhone
    培训班老师:记住啊,你们写代码一定要多检查 null,这样可以让人家觉得你很有经验。楼主同事:记住了
    isnullstring
        139
    isnullstring  
       2021-03-19 15:13:29 +08:00
    就这?
    easylee
        140
    easylee  
       2021-03-19 15:16:58 +08:00 via Android
    非要加外包两个字,何必呢?

    搞歧视么。
    hejw19970413
        141
    hejw19970413  
       2021-03-19 15:21:17 +08:00
    没事 编译器会改成 return issueStatistics
    ws52001
        142
    ws52001  
       2021-03-19 15:21:24 +08:00
    这也有歧视链??
    cgpiao
        143
    cgpiao  
       2021-03-19 15:25:18 +08:00 via iPhone
    所以你以后被人鄙视的时候想想自己的所作所为。没大能力,哪来的优越感。
    yrj
        144
    yrj  
       2021-03-19 15:33:04 +08:00 via iPad
    是不是有绩效?
    cd744639718
        145
    cd744639718  
       2021-03-19 15:36:22 +08:00
    哈哈哈,学到了
    liuzhenyu
        146
    liuzhenyu  
       2021-03-19 15:44:53 +08:00
    你以为你在第二层,他在第一层,实际他在大气层
    gwybiaim
        147
    gwybiaim  
       2021-03-19 15:46:54 +08:00
    @liudaolunhuibl 快别献丑了
    supermao
        148
    supermao  
       2021-03-19 15:52:56 +08:00
    哈哈哈哈哈哈哈哈
    rapperx2
        149
    rapperx2  
       2021-03-19 15:56:50 +08:00
    楼主能贴下你的代码给我们瞧瞧吗?学习学习
    mosliu
        150
    mosliu  
       2021-03-19 16:03:55 +08:00
    这个就不错了。在代码编译的时候应该会优化掉。 扩展性十足。不影响效率。

    爆一个前同事,自己号称当年高考数学满分的硕士写的代码

    使用 ES 。ES 库每个月也就 1,2T,数据量也不是太大。每条数据有多个现成的相似字段,相似数据条数从没有到几十万都有可能。单条数据量从 1k 到上百 k 都有。每条数据有时间戳字段,这是大环境

    需求是,比对一条数据是不是类似数据最早的,返回一个 bool 值。这位的做法是按相似值字段,从 ES 中取出 10000 条不做排序数据的所有的字段到内存中,按照日期字段的字符串直接比较得出结果。

    幸亏了他前面程序的一个判断出了 bug (功能故障没被测出来) 这段代码基本上跑不到,不然一次从 ES 拉取取几十 M 的数据做比较。那画面想想真醉了。前两天直接功能全部重写掉才舒心了。
    fakeJas0n
        151
    fakeJas0n  
       2021-03-19 16:25:27 +08:00
    写得有什么毛病?
    gwybiaim
        152
    gwybiaim  
       2021-03-19 16:37:46 +08:00
    别幼稚了!评《新来的外包同事,这代码,我???》
    https://v2ex.com/t/763248
    balckjoker
        153
    balckjoker  
       2021-03-19 16:37:54 +08:00
    大家都干一样的活,没必要说出来。
    mitu9527
        154
    mitu9527  
       2021-03-19 16:46:41 +08:00
    代码写的差是他的问题,嘲讽他就不太合适了,帮他一把不好么。
    msg7086
        155
    msg7086  
       2021-03-19 16:48:40 +08:00
    @ho121 #124 对,但是我们这是只返回 boolean 的 Java 代码……
    unco020511
        156
    unco020511  
       2021-03-19 16:52:10 +08:00
    高扩展高可用,哈哈
    Kilerd
        157
    Kilerd  
       2021-03-19 17:15:58 +08:00
    @vicalloy #24 你这个是典型的 deepcopy 的偷懒写法啊。 某些场景里面这么写性能其实也蛮好的。
    vicalloy
        158
    vicalloy  
       2021-03-19 17:37:18 +08:00
    @Kilerd 问题是没有需要 deepcopy 的东西,返回的对象都是当前函数里构建出来的。当初也怕是 deepcopy 没敢轻易修改。结合整体的”代码风格“,确认就是为了把对象转成`JSON`。
    Gladoos
        159
    Gladoos  
       2021-03-19 17:58:20 +08:00 via iPhone
    都是打工人 何必呢
    chenqh
        160
    chenqh  
       2021-03-19 18:05:28 +08:00
    @mosliu 我干过类似的,不过是 mysql
    Labs
        161
    Labs  
       2021-03-19 18:56:17 +08:00
    都是打工人
    talen666
        162
    talen666  
       2021-03-19 19:12:12 +08:00
    你是没见过我们公司外包写的代码。。想哭
    JerryCha
        163
    JerryCha  
       2021-03-19 19:21:11 +08:00
    除了看起来比较好笑,并没有什么问题。
    jdandelion573
        164
    jdandelion573  
       2021-03-19 19:38:18 +08:00 via Android
    这算啥 还见过 if(!(!a&&!b)) 的自嗨代码 反正没有 review 当然放飞自我
    proletarius
        165
    proletarius  
       2021-03-19 20:14:14 +08:00
    对自己又有信心了
    snowlyg
        166
    snowlyg  
       2021-03-19 20:35:41 +08:00
    代码没有错误就行,纠结那个多没啥用
    auh
        167
    auh  
       2021-03-19 20:40:10 +08:00
    实际上,不光外包的存在这样的问题。某些本公司的也是垃圾。
    所以说,描述的时候,别带外包。直接说同事垃圾就行了。
    我都见垃圾见多了。你还是太年轻了。你见过哪个高手死扣别人不放的。
    要么是有强迫症,要么就是没有社会经验,不懂变通。
    auh
        168
    auh  
       2021-03-19 20:42:20 +08:00   ❤️ 1
    嘲讽没有错,谁没有这样的垃圾同事。不过谁又总能遇到比自己还优秀,代码写的还钓的人。
    心态放平。该喷还喷,千万别认真。仅此而已。
    coolesting
        169
    coolesting  
       2021-03-19 20:49:56 +08:00 via Android
    抄底的人笑没有抄底的人,谁知道接下来是跌还是涨!?
    nowto
        170
    nowto  
       2021-03-19 21:29:04 +08:00
    可能是他想强调这个方法有可能返回 null
    a7dog
        171
    a7dog  
       2021-03-19 21:34:29 +08:00
    这是什么语言
    Fengyesuixiang
        172
    Fengyesuixiang  
       2021-03-19 21:40:35 +08:00   ❤️ 1
    外包怎么了,养活多少人你知道吗
    Hapon
        173
    Hapon  
       2021-03-20 01:17:13 +08:00 via iPhone   ❤️ 2
    代码这么写,确实不妥,就像这帖子一样
    SmartKeyerror
        174
    SmartKeyerror  
       2021-03-20 07:57:38 +08:00 via Android   ❤️ 1
    “每当你觉得想要批评什么人的时候,你切要记着,这个世界上的人并非都具备你禀有的条件。”
    大家都是同事,如果你觉得他写的不好,你可以选择帮他改。
    hankai17
        175
    hankai17  
       2021-03-20 08:24:52 +08:00 via iPhone
    感觉是改出来的结果
    James369
        176
    James369  
       2021-03-20 09:39:39 +08:00
    不用纠结这些细节,查查代码的历史记录。这段代码应该是有故事的。
    54skyer
        177
    54skyer  
       2021-03-20 10:40:21 +08:00
    写差代码跟是不是外包没有直接关系,可能几率大点而已。

    我以前在腾讯互娱心悦做外包,有一次活动对接 QQ 音乐,别人提供的 js 库对接出了问题,我排查发现是个 bug,联系对接方的正职员工并给出了解决方案,别人最后校验也认可了。但是,让我直接 copy 一份改好之后上传到到互娱心悦的 CDN,相当于一个官方库,让我修复 bug 本地使用,官方库 bug 保留。

    另外一个,有个正职大佬带我外包做一个内部项目,让 TX 各个手游接入到自己的游戏内活动页,领取哪些每日每周每月礼包之类的,传个 QQ 或者微信 openid 之类的参数即可,接入网关时候,有个加密校验,游戏客户端因为加密不对导致网关半天接不进去,各个语言的加密代码文档都备好了,包括天美这样的工作室下的游戏都有开发人员半天接不进来需要我协助的。

    做到最后,我把自己做得像个客服一样,天天给大佬们沟通问题。

    这些问题难吗,我觉得不难,我就一培训出来当时几千块月薪的外包。但这些正职大佬就是有一部分混子,或者不认真的。然后我干了快两年就升了一次外包职级涨了一千块,这个外包升职听说外包一年评估一次,每次通过率在整个外包人员是 10%-15%,涨薪就千把来块,由正职导师推荐。镀金可以,薪资潜力不高,后来我就离职了。

    外包也别把自己看轻,别人怎么看不重要,好好提升自己的技术,技术强了,你是外包又怎么样呢,如果比正职还厉害,可能羞愧的是别人。

    有想做外包的同事去大厂长下见识还是可以的,可以待个一两年,转正基本不要想,想转职不如好好提升技能到能说服导师的程度,然后让其帮你走社招进入;工作起始比较清闲和稳定,但工作内容可能有点枯燥。空闲的时候抓紧时间学习。正职员工大多都是跟我们一样的普通人,没那么多优越感,抓紧机会多多讨教学习。

    提出指出问题容易,解决问题指导别人更难能可贵。

    站在顶峰的人就那么一些,我们怎么看下面,上面就可能怎么看我们。

    歧视必然存在,尽量不内卷吧;
    hantsy
        178
    hantsy  
       2021-03-20 11:43:13 +08:00
    可能写的时候手抖了吧。

    判断为 NULL, 返回一个 Collections.emptyList(),这是比较常见的操作。

    在 Caller 调用保证所有的 Collection 不为 NULL 。


    @54skyer 有些人就喜欢标题来吸引人眼球。

    我自己 Freelancer 这么多年,也是接外包项目。没有独立做过外包项目的人,我觉得知识面和动手能力不是一般的差(我帮朋友公司面试过很多人,之前已经举过很多例子)。
    hantsy
        179
    hantsy  
       2021-03-20 11:53:34 +08:00
    @LeroyMooney

    一个星期如果写的 600 行高质量的代码已经不错了,比如包含在 CI 上跑过完整的测试,达到要求的 Coverage, 并且代码质量报告评估通过(没有引入新的 bad smell, 没有 duplicate codes, 通过 Sonar,Coday,Code Climate 等工具检测),最终合并到 Master 。

    很多时候我一个星期都是写不了 600 行代码的。

    如果你写的代码仅仅在你机器能够跑起来,这个标准写出来再多的代码不就是屎山,谁见谁怕。
    hantsy
        180
    hantsy  
       2021-03-20 11:54:50 +08:00
    @PopRain 相当高效的啦。
    lyyhello
        181
    lyyhello  
       2021-03-20 22:07:10 +08:00
    代码没毛病。能编译过就不错了。大哥
    snuglove
        182
    snuglove  
       2021-03-21 13:42:28 +08:00
    因为你强调了外包 这可是一个大的群体.
    Gooeeu
        183
    Gooeeu  
       2021-03-21 17:57:29 +08:00
    @liudaolunhuibl 可以解释下 2 吗?


    @anonydmer 写 Java 的时候最怀念的 C++ keyword 是 const, 写 C++ 的时候非常讨厌 const (因为菜。。因为总是标不对).... 第二怀念的是 template 。
    solobat
        185
    solobat  
       2021-03-21 22:28:23 +08:00
    不是啥大问题,那些自以为是、途有其形的代码更要命,比如 x 度的码神训练营。
    wulinn
        186
    wulinn  
       2021-03-22 08:56:52 +08:00
    感觉没啥问题,这已经是很好的代码了,至少会三目运算
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5904 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 02:01 · PVG 10:01 · LAX 18:01 · JFK 21:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.