练习两年半的同事写的代码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MIUIOS
V2EX    Java

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

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

    新来的同事写的代码,两年半工作经验,一个 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  
    PRO
       2021-12-30 10:32:46 +08:00   1
    你们公司还招人吗
    MIUIOS
        11
    MIUIOS  
    OP
       2021-12-30 10:33:42 +08:00 via iPhone
    @k9982874 硬是把面对对象概念按在地上打
    nonoyang
        12
    nonoyang  
       2021-12-30 10:34:03 +08:00
    我怀疑除了方法里面的内容,其他的都是从别的地方拷贝过来的。。。
    hiwind
        13
    hiwind  
       2021-12-30 10:34:13 +08:00   5
    map 一把梭 要啥 get 啥
    ltmst
        14
    ltmst  
       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
    这是高手,要写让人一看就懂的代码,无论是初学者还是架构师,而不是写炫技的代码。
    timothye
        20
    timothyye  
       2021-12-30 10:35:39 +08:00
    @murmur 估计是复制粘贴忘了改
    rrZ2C
        21
    rrZ2C  
       2021-12-30 10:35:41 +08:00
    这是传说中的参数封装吧
    ex1gtnim7d
        22
    ex1gtnim7d  
       2021-12-30 10:35:51 +08:00
    也许槽点在于,写了一星期
    MIUIOS
        23
    MIUIOS  
    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 么?
    MIUIOS
        27
    MIUIOS  
    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 div class="sep5">
    @totoro52 方法名不太合适、参数用 map 也不太合适、equals 按照上面那样写容易空指针、除特殊情况下方法最好不要返回 null 这些是我看出来的 不知道别的还有没有
    MIUIOS
        36
    MIUIOS  
    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
    比起网友怎么看,楼主你的领导和同事怎么看,如果他们没啥看法,那么该离职的人应该是楼主自己哦......
    MIUIOS
        44
    MIUIOS  
    OP
       2021-12-30 10:58:20 +08:00
    @coderluan 我是管他们的人
    MIUIOS
        45
    MIUIOS  
    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  
          2
    这种基础 crud 代码不应该建好表后,直接用代码生成器生成吗? 5 分钟搞定
    MIUIOS
        51
    MIUIOS  
    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 的可维护性很差
    ryanbuu
        72
    ryanbuu  
       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  
    PRO
       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     Solana     4857 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 09:46 PVG 17:46 LAX 02:46 JFK 05:46
    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