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

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

  •  2
     
  •   totoro52 · 2021-12-30 10:19:02 +08:00 · 25445 次点击
    这是一个创建于 636 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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