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

练习两年半的同事写的代码

  •  2
     
  •   totoro52 · 183 天前 · 23369 次点击
    这是一个创建于 183 天前的主题,其中的信息可能已经有所发展或是发生改变。

    新来的同事写的代码,两年半工作经验,一个 CURD 功能写了一星期,今天看了 git commit ,我不做评论,各位看官看吧
    图片

    206 条回复    2022-01-04 17:46:30 +08:00
    1  2  3  
    ytll21
        1
    ytll21  
       183 天前   ❤️ 5
    槽点太多,无从下手
    qiany
        2
    qiany  
       183 天前   ❤️ 3
    你们公司还招人吗
    66beta
        3
    66beta  
       183 天前
    不懂 java ,但我觉得注释不行
    glfpes
        4
    glfpes  
       183 天前   ❤️ 3
    试用期就是给这种贵物准备的。

    面试的人呢?拖出去枪毙十分钟。
    aragakiyuii
        5
    aragakiyuii  
       183 天前
    这咋面试过的
    IamCyborg
        6
    IamCyborg  
       183 天前   ❤️ 1
    前端表示看不懂,没学过 java ,有人解释一下吗
    xiao109
        7
    xiao109  
       183 天前   ❤️ 2
    这不写的挺好的嘛,map 入参减少新建一个类的麻烦。
    现在两年半经验约等于零经验。培训班出来都是两年经验起步
    murmur
        8
    murmur  
       183 天前   ❤️ 7
    update = 获取,我英语是跟体育老师学的么
    k9982874
        9
    k9982874  
       183 天前   ❤️ 7
    用 map 充分考虑到了 api 的扩展性,没毛病,建议全司推广🐶️
    zhoudaiyu
        10
    zhoudaiyu  
       183 天前   ❤️ 1
    你们公司还招人吗
    totoro52
        11
    totoro52  
    OP
       183 天前 via iPhone
    @k9982874 硬是把面对对象概念按在地上打
    nonoyang
        12
    nonoyang  
       183 天前
    我怀疑除了方法里面的内容,其他的都是从别的地方拷贝过来的。。。
    dejavuwind
        13
    dejavuwind  
       183 天前   ❤️ 5
    map 一把梭 要啥 get 啥
    gbw1992
        14
    gbw1992  
       183 天前
    前端看到接口名会不会心里会不会**
    mineralsalt
        15
    mineralsalt  
       183 天前   ❤️ 10
    1.map 做参数是不太好, 但是也有实际应用场景
    2.return null 问题比较大, 这里应该抛异常然后全局处理异常, 或者用 ApiResult.error()
    3.equal 写的不规范容易空指针异常
    4.id 没有判空, 也容易空指针
    night98
        16
    night98  
       183 天前   ❤️ 14
    http method -》 post
    func name -》 update
    service func name -》 get

    好家伙,差点就集齐神龙了
    xinyang5302677
        17
    xinyang5302677  
       183 天前   ❤️ 5
    他是不是你工资比你高?
    auto
        18
    auto  
       183 天前
    fkdtz
        19
    fkdtz  
       183 天前   ❤️ 5
    这是高手,要写让人一看就懂的代码,无论是初学者还是架构师,而不是写炫技的代码。
    timothyye
        20
    timothyye  
       183 天前
    @murmur 估计是复制粘贴忘了改
    rrZ2C
        21
    rrZ2C  
       183 天前
    这是传说中的参数封装吧
    kerb15
        22
    kerb15  
       183 天前
    也许槽点在于,写了一星期
    totoro52
        23
    totoro52  
    OP
       183 天前 via iPhone
    @nonoyang 自信点,怀疑两个字去掉
    murmur
        24
    murmur  
       183 天前
    @auto 这个没看出问题来。。。
    hccsoul
        25
    hccsoul  
       183 天前
    我看懂了,但我还是大受震撼
    liangch
        26
    liangch  
       183 天前
    不大懂。map 参数不判 null 么?
    totoro52
        27
    totoro52  
    OP
       183 天前
    @xinyang5302677 那倒不至于
    jiyingze
        28
    jiyingze  
       182 天前
    第一行 if 可能抛两个 npe
    哈哈哈
    philchang1995
        29
    philchang1995  
       182 天前
    @auto 颇有异曲同工之妙
    zpxshl
        30
    zpxshl  
       182 天前 via Android   ❤️ 1
    @glfpes 他们会说你是精神资本家
    yazinnnn
        31
    yazinnnn  
       182 天前
    槽点是挺多的。。。
    majiaxxyy
        32
    majiaxxyy  
       182 天前
    入参 map 一时爽,后期维护惨。 前面的 return null 前端怎么知道要干嘛。 后面的 return 都知道回个 success 。
    glfpes
        33
    glfpes  
       182 天前
    @zpxshl 那就让他们和这种贵物一块干活,给他擦屁股吧。
    mango88
        34
    mango88  
       182 天前
    项目中有类似的代码(不是他提交的) ?
    philchang1995
        35
    philchang1995  
       182 天前
    @totoro52 方法名不太合适、参数用 map 也不太合适、equals 按照上面那样写容易空指针、除特殊情况下方法最好不要返回 null 这些是我看出来的 不知道别的还有没有
    totoro52
        36
    totoro52  
    OP
       182 天前 via iPhone
    @mango88 第一次见到这种,代码已经全部打回重写了
    philchang1995
        37
    philchang1995  
       182 天前
    @totoro52 回复错人了 不好意思
    ZField
        38
    ZField  
       182 天前
    槽点很多,map 传参、返回值不规范、校验可以用注解……
    Zeffon
        39
    Zeffon  
       182 天前   ❤️ 3
    工资估计高于楼主吧
    cxshun
        40
    cxshun  
       182 天前
    参数用 map ,后续估计想死的心都有了。
    CRUD 一个星期倒不是啥问题,有可能刚入职,很多不清楚,要熟悉一下。只是上面的 map 槽点就真是没法理解了。

    PS:我厂,某养猪的,定义的接口就是一个 dict ( python 语言),作为一个 javaer ,真是受不了。虽然前期方便,但后续真的是坑爹啊。
    cslive
        41
    cslive  
       182 天前   ❤️ 2
    既然用 map 接参,那就应该继续用 map 反参🐶
    ltf127001
        42
    ltf127001  
       182 天前
    公司新来的四年工作经验大佬,变量定义 300+行,两个 for 循环,每个循环 1000+行,一个业务 2300+行代码😦
    coderluan
        43
    coderluan  
       182 天前
    比起网友怎么看,楼主你的领导和同事怎么看,如果他们没啥看法,那么该离职的人应该是楼主自己哦......
    totoro52
        44
    totoro52  
    OP
       182 天前
    @coderluan 我是管他们的人
    totoro52
        45
    totoro52  
    OP
       182 天前 via iPhone
    @aragakiyuii 不是我面的,漏网之鱼
    nba2k9
        46
    nba2k9  
       182 天前   ❤️ 1
    又不是不能用
    xianyu191031
        47
    xianyu191031  
       182 天前
    面试的人要负很大责任
    snuglove
        48
    snuglove  
       182 天前
    @totoro52 哈哈哈,领导竟是我自己
    HHAO2019
        49
    HHAO2019  
       182 天前
    团队没有制定开发规范吗?
    Suddoo
        50
    Suddoo  
       182 天前 via iPhone   ❤️ 2
    这种基础 crud 代码不应该建好表后,直接用代码生成器生成吗? 5 分钟搞定
    totoro52
        51
    totoro52  
    OP
       182 天前 via iPhone
    @HHAO2019 我写了文档的,文档详细说明了开发规范,他全部避开了
    JKeita
        52
    JKeita  
       182 天前
    我比较好奇这注释。。。
    linbingcheng
        53
    linbingcheng  
       182 天前
    这种没法用 Swagger ,难受, 并且这注释还不如没注释
    dddd1919
        54
    dddd1919  
       182 天前
    以前不理解为啥开发盯着屏幕能笑得这么欢乐,看这个代码真的处处充满欢乐
    wyhooo
        55
    wyhooo  
       182 天前
    @ltf127001 年底因代码提交量最多而升职
    nicegoing
        56
    nicegoing  
       182 天前
    这个应该要统一封装返回数据的格式吧。出现 null ,也好统一处理呀
    AlkTTT
        57
    AlkTTT  
       182 天前
    md ,看到 map 传参血压都上来了
    francis59
        58
    francis59  
       182 天前
    这两年半经验是包装出来的吗?
    zmqking
        59
    zmqking  
       182 天前   ❤️ 3
    有必要这样对我吗,自己几斤几两不知道吗?
    zepc007
        60
    zepc007  
       182 天前
    python 同学表示这不正常吗? Java 里正常应该用啥传参? DTO ?
    yaphets666
        61
    yaphets666  
       182 天前
    培训班出来的
    yaphets666
        62
    yaphets666  
       182 天前
    而且是班里的差生
    cvbnt
        63
    cvbnt  
       182 天前 via Android
    现在培训班教出来的都不会用 map 传参
    aeiou520
        64
    aeiou520  
       182 天前
    我觉得不是培训班出来的..培训班出来的起码知道面向对象
    NoString
        65
    NoString  
       182 天前
    这也行?
    liub34177
        66
    liub34177  
       182 天前
    入参怎么还用 map ,而且为啥用 Object 当 Value ????
    james2013
        67
    james2013  
       182 天前   ❤️ 3
    真的不容易,能够在短短几行出现这么多问题:
    1.获取数据推荐使用 GET 方法
    2.方法名称有问题
    3.参数传值使用 map
    4.参数校验和返回有问题
    5.注释有问题
    baolinliu442k
        68
    baolinliu442k  
       182 天前
    尴尬 我居然觉得没啥问题
    murmur
        69
    murmur  
       182 天前
    @liub34177 为啥不能用 map 啊,我们在做少代码,入参都是变的,那不用 map 用 object 么,而且 body 以 json 过来不就是个 map 么
    stkstkss
        70
    stkstkss  
       182 天前
    图挂了
    banmuyutian
        71
    banmuyutian  
       182 天前
    @murmur #69
    因为 map 的可维护性很差
    q1angch0u
        72
    q1angch0u  
       182 天前
    @murmur 因为别人要猜这个葫芦里装的是什么屎。。。
    ila
        73
    ila  
       182 天前 via Android
    @murmur 做了参数检测,自己组合到 map 没问题
    lucays
        74
    lucays  
       182 天前
    python 也可以用 object 的,比如 pydantic 或者基本的 dataclass
    ytmsdy
        75
    ytmsdy  
       182 天前
    很好奇,工资多少?
    如果没过 10k ,那就当作没看到,能跑就行了。
    如果过了 10k ,那就可以直接劝退了!
    yousabuk
        76
    yousabuk  
       182 天前 via iPhone
    越是高手在写代码时越是谨慎,经过反复推敲后写出最精简、干练的代码。

    哈哈
    wancaibida
        77
    wancaibida  
       182 天前
    kotlin 用久了都忘了要处理空指针异常了🤣
    tanranran
        78
    tanranran  
       182 天前
    @q1angch0u #72 笑死了
    h82258652
        79
    h82258652  
       182 天前
    我以为.net 这边烂人多,没想到 java 那边的高手更厉害[狗头]
    之前见过 dynamic 随处飘的,但至少命名还算是个正常人,楼主你这个同事的思维就贼离谱
    leafre
        80
    leafre  
       182 天前
    你负责 review 代码?如果不是,领导没说话,咱就干好自己的活
    rpman
        81
    rpman  
       182 天前
    动态语言写多了甚至第一眼没觉得违和 (
    potatowish
        82
    potatowish  
       182 天前 via iPhone
    1.代码看上去是复制粘贴的,但是注释和方法名没改
    2.参数用 map
    3.equals 比较错误
    4.接口返回结果混乱,前面返回 null ,后面返回 ApiResult
    但凡有个一年经验的外包也不至于写成这样,建议直接辞退,不然以后会埋很多坑
    wamson
        83
    wamson  
       182 天前 via iPhone
    python 写多了,扫一眼只觉得函数名和注释不规范(狗头
    preach
        84
    preach  
       182 天前
    现在开除还来及
    NeoZephyr
        85
    NeoZephyr  
       182 天前
    @66beta 有就不错了
    NeoZephyr
        86
    NeoZephyr  
       182 天前
    @mineralsalt 能跑起来就行了,管那么多啊
    NeoZephyr
        87
    NeoZephyr  
       182 天前
    @banmuyutian 你给我说说维护性差在哪里?张口就来
    Amber2011
        88
    Amber2011  
       182 天前 via Android
    我们这里也有一个这样,还好代码后续不是我维护的。还有用 String 接请求,然后手动 json 解析成 map 。
    zhoudaiyu
        89
    zhoudaiyu  
       182 天前
    怼上去就完了
    wfd0807
        90
    wfd0807  
       182 天前
    看开,能跑就行
    banmuyutian
        91
    banmuyutian  
       182 天前
    @NeoZephyr #87
    1.swagger(或者类似的自动生成 api 文档工具)没法用,除非手写注解生成或者维护一份 api 接口文档,参数更新的时候也要维护
    2.产生一堆魔法值同样是难以维护的
    3.后续接手代码的人还要一个一个去查找参数
    banmuyutian
        92
    banmuyutian  
       182 天前
    @NeoZephyr #87
    倒是想你给我说说维护性好在哪
    banmuyutian
        93
    banmuyutian  
       182 天前
    @banmuyutian #91
    第一条还要补充一下,按照截图中的注释说明以及大部分程序员的习惯(包括我),怕是做不到手工维护 API 文档
    shayuvpn0001
        94
    shayuvpn0001  
       182 天前
    代码和他两个任意一个能跑就行:

    代码可以跑,他没跑,你们可以把他按倒地上摩擦;
    代码不能跑,他跑了,代码可以把你们按在地上摩擦;
    NeoZephyr
        95
    NeoZephyr  
       182 天前
    @banmuyutian 不对啊,用 swagger 肯定是原来代码里面就这样的啊,也不是他引入的
    NeoZephyr
        96
    NeoZephyr  
       182 天前
    @banmuyutian 维护性好不好是相对的,如果根本就没有维护的必要,要那么好的维护性干嘛
    fffang
        97
    fffang  
       182 天前
    看着好像没什么问题
    banmuyutian
        98
    banmuyutian  
       182 天前   ❤️ 1
    @NeoZephyr #96
    这是项目代码不是个人小玩具,如果你无意提高自己编码质量的话说再多也没用,总能找到反驳的理由
    Kimen
        99
    Kimen  
       182 天前
    他试用期要是能过,劳资立马转行
    lybcyd
        100
    lybcyd  
       182 天前
    最大的问题是 return null 吧,接口要返回明确的错误信息

    其他的地方,Java 程序员当然看不下去,但是如果这人原来是写 python 或 php 之类的,就好像看上去并没有什么问题。不过也说明至少不是 Java 熟练工了,各种 VO ,DTO 之类的玩得少
    1  2  3  
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4306 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 02:38 · PVG 10:38 · LAX 19:38 · JFK 22:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.