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

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

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

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

    206 条回复    2022-01-04 17:46:30 +08:00
    1  2  3  
    godloveplay
        101
    godloveplay  
       2021-12-30 13:55:57 +08:00
    @rrZ2C #21 我 tm 哈哈哈哈哈哈
    guopongex19891
        102
    guopongex19891  
       2021-12-30 14:01:22 +08:00
    acfun
    OMGZui
        103
    OMGZui  
       2021-12-30 14:16:10 +08:00
    sakura1
        104
    sakura1  
       2021-12-30 14:19:46 +08:00
    语法最大的问题应该是没有考虑异常逻辑和空指针的情况吧。如果是异常逻辑的话,看来下层的接口没有异常声明,那就也没问题。空指针的话,确实有点离谱了,虽然一个函数的返回值可能是 null 从接口 api 看不出来,但是 jdk 的类库 Map 的 get 会返回 null 这点常识的应该知道。如果这个接口只处理用于前端或客户端拼接出来的请求,应该都是带 id 的。。

    其实仔细看之后感觉还是 map 作为参数的问题比较大,map 作为参数,里面有哪些具体参数从代码上不能自解释,但是文档里又啥也没写,用这个接口的人只能微信之类的上问。

    说到口口相传,确实**
    johnsona
        105
    johnsona  
       2021-12-30 14:25:29 +08:00 via iPhone
    就 map 传参了怎么样
    HENQIGUAI
        106
    HENQIGUAI  
       2021-12-30 14:31:25 +08:00   ❤️ 2
    @totoro52 #49 这正说明他肯定认真读了你写的开发规范,不然不会避开的这么彻底。。。
    JamesMackerel
        107
    JamesMackerel  
       2021-12-30 14:32:30 +08:00
    有时候写参数表,我喜欢在最后面留一个 Map<String, Object> extraInfo ……免得到时候改起来不够“敏捷”。
    tankren
        108
    tankren  
       2021-12-30 14:49:52 +08:00
    直接让他主动离职吧 不然等试用期判他不合格他跟你闹腾
    JoeBreeze
        109
    JoeBreeze  
       2021-12-30 14:53:05 +08:00   ❤️ 2
    @zmqking #59 这位是代码的作者吗? 突然想到我会不会在这里看到我自己的代码, 害 pia
    TelltoLies
        110
    TelltoLies  
       2021-12-30 14:53:14 +08:00
    太多可以吐槽的了,,,日志没有 、注释不规范、object 超类也有很大的问题、、这个 map 取值比较 真的一言难尽。。正常 java 程序员都不会写出这种代码
    cxl008
        111
    cxl008  
       2021-12-30 14:55:44 +08:00
    map.get 可能返回空 调用 equals 会报异常。。。。。
    xianyv
        112
    xianyv  
       2021-12-30 14:55:50 +08:00
    拖出去直接祭天了吧
    yogapants
        113
    yogapants  
       2021-12-30 14:59:08 +08:00
    贵公司还找人吗?我觉得我写的比他好一点呢,这种功能应该写不了一个礼拜
    la2la
        114
    la2la  
       2021-12-30 15:03:27 +08:00
    挺好的,前期都把活干好了,我们不都失业了么。狗头.jpg
    bl
        115
    bl  
       2021-12-30 15:03:47 +08:00
    这种代码看到就想吐槽
    hidemyself
        116
    hidemyself  
       2021-12-30 15:10:02 +08:00
    我就想问工资多少,要是比我高,我不能接受的
    lululau
        117
    lululau  
       2021-12-30 15:11:34 +08:00
    @glfpes 公司就给 5k 的预算,你想让我招个什么样的。。。
    456789
        118
    456789  
       2021-12-30 15:12:17 +08:00
    传 map 打死
    leexy
        119
    leexy  
       2021-12-30 15:19:04 +08:00
    看着跟我们公司那群 java 开发写的差不多啊
    florianX
        120
    florianX  
       2021-12-30 15:45:41 +08:00
    开发规范这种东西,我比较菜 基本没碰到过硬性要求,代码统一,能跑就行
    notwaste
        121
    notwaste  
       2021-12-30 15:55:05 +08:00
    自称两年半的话基本可以断定是培训出来的了
    jswh
        122
    jswh  
       2021-12-30 15:57:19 +08:00
    用 map 的话可能是 PHP 转过来的,就是这个 获取 post update ,我实在不知道怎么辩解。
    binaryxia
        123
    binaryxia  
       2021-12-30 16:03:16 +08:00
    槽点太多,无从下手
    unco020511
        124
    unco020511  
       2021-12-30 16:04:51 +08:00
    每次看到什么 map 传参或者作为 result,还有解析用什么 jsonObject 的都好头疼,后面维护的人不得骂爹娘了
    sunchunyang
        125
    sunchunyang  
       2021-12-30 16:08:58 +08:00
    测试人员提意见了没有?
    mkdir
        126
    mkdir  
       2021-12-30 16:11:28 +08:00
    就想知道开多少工资
    yogapants
        127
    yogapants  
       2021-12-30 16:12:24 +08:00
    @unco020511 我们部门有个老哥工作 10 多年了,有次来我们组帮忙不知道是报复还是怎么回事直接 map 返回的时候 key 是中文,后面我去迁移改造不动前端,真的是一边改一边骂娘。大家都说他技术好,可能大佬真的不屑于这些细枝末节吧
    msg7086
        128
    msg7086  
       2021-12-30 16:12:52 +08:00
    我们组上个月刚开掉一个代码写得比你贴的好很多的人,开除原因是能力不行。
    xunbug
        129
    xunbug  
       2021-12-30 16:14:06 +08:00
    别跟我扯什么实体类啊 vo 啊 bo 啊,老夫写代码从来都是 map 一把梭,不怕产品改需求
    unco020511
        130
    unco020511  
       2021-12-30 16:15:36 +08:00
    @yogapants 真大佬往往都有代码洁癖
    zhoiiiii
        131
    zhoiiiii  
       2021-12-30 16:26:49 +08:00
    看着确实头大,一眼看下去就有三四个地方可能出现异常
    emhhb2ppy
        132
    emhhb2ppy  
       2021-12-30 16:31:39 +08:00
    字体挺好看的
    darkengine
        133
    darkengine  
       2021-12-30 16:33:19 +08:00
    先别说 Java 语言的问题了,用 post 请求获取数据,API 名字叫 update 。。。。。。
    ww940521
        134
    ww940521  
       2021-12-30 16:35:29 +08:00
    没办法 我们公司后端要的也是 map ,我也只能传 Map 也没文档参数总是对照不上。
    alihanniba
        135
    alihanniba  
       2021-12-30 16:37:17 +08:00
    啥问题
    Marszm
        136
    Marszm  
       2021-12-30 16:38:19 +08:00   ❤️ 2
    太灵活了。。。。万能啊。。我悟了大师。。。去 TMD 面向对象,要对象干什么,我 Map 就是自由精神的极致体现。
    你们前端随便怎么传,我以不变应万变。
    murmur
        137
    murmur  
       2021-12-30 16:40:03 +08:00
    @darkengine 这个其实真不是坑,post 没有 url 的限制,body 想怎么放怎么放,天然还不缓存,企业内部开发用这个太爽了
    hhjswf
        138
    hhjswf  
       2021-12-30 17:02:49 +08:00 via Android
    map 看情况...我们有个很蛋疼的原因,哪怕就一个参数 id 也要用 body ,然后就...不可能建实体吧,那就 json map 咯..
    q1angch0u
        139
    q1angch0u  
       2021-12-30 17:03:46 +08:00
    @murmur 歪个楼。。。get 有啥 url 的限制吗
    ozipin
        140
    ozipin  
       2021-12-30 17:04:17 +08:00   ❤️ 2
    post 请求我可以接受,update 命名的方法我可以理解为复制粘贴忘记改过来了,但是这个入参和方法内容真的一行一个坑。map 接收参数,从 map 中获取的对象直接使用 equals ,有统一的返回结构直接返回 null ,从 map 中获取对象直接类型强转,获取数据不做处理。好奇工资多少
    pengtdyd
        141
    pengtdyd  
       2021-12-30 17:05:55 +08:00
    大家别吵了~~~~~~,给我人皇一个面子,我说句公道话:又不是不能跑,改它干啥,万一,我是说万一改崩了呢
    boringcc
        142
    boringcc  
       2021-12-30 17:08:43 +08:00
    不会依葫芦画瓢吗。。。。
    LiMingze
        143
    LiMingze  
       2021-12-30 17:10:54 +08:00
    看着代码 我已经开始生气了[○・`Д´・ ○]
    murmur
        144
    murmur  
       2021-12-30 17:12:41 +08:00
    @q1angch0u url 长度 4000 啊,谁知道以后要传什么 jb 东西
    bluekz
        145
    bluekz  
       2021-12-30 17:23:31 +08:00
    大家都在说 map 传参数,为啥我槽点不一样。
    看注释这是“获取单条数据”方法,看方法名,这是 update ?
    就怕旁人看明白我代码系列。
    HolmLoh
        146
    HolmLoh  
       2021-12-30 17:28:19 +08:00   ❤️ 3
    我也给大家看看 1 年的练习生

    keeley
        147
    keeley  
       2021-12-30 17:35:41 +08:00
    第一大问题是 是 update 命名吧,实际做的是 get 吧。
    语义习惯都破坏了。
    abc0123xyz
        148
    abc0123xyz  
       2021-12-30 17:45:24 +08:00
    挺好的,你们格局小了,这样可以一个人带动两个兄弟就业
    c6h6benzene
        149
    c6h6benzene  
       2021-12-30 18:01:55 +08:00
    PostMapping ,这是获取数据还是更新数据…
    bigxianyu
        150
    bigxianyu  
       2021-12-30 18:07:44 +08:00 via Android
    想不到大家对这一段代码这么热情,这 code review 看来能搞起来了。。。
    WilliamYang
        151
    WilliamYang  
       2021-12-30 18:11:06 +08:00
    你可以考虑下,反正我绝对不跟这种做同事
    Latin
        152
    Latin  
       2021-12-30 18:29:48 +08:00
    当面吐槽 (不行)
    来 V 站嘲评 (可以)
    leeyom
        153
    leeyom  
       2021-12-30 18:49:38 +08:00 via iPhone
    1.入参 map 一时爽,重构火葬场
    2.if equal 左侧如果出现 null ,直接异常
    3.直接 return null ,没有用 ApiResult 包装
    4.直接从 map 取出后强转,有可能异常
    chengyunbo
        154
    chengyunbo  
       2021-12-30 18:57:03 +08:00
    @AlkTTT java map 不能传参了?
    shayuvpn0001
        155
    shayuvpn0001  
       2021-12-30 19:00:26 +08:00   ❤️ 1
    @HolmLoh 甭不住了,神特么 Pro ,笑死~
    wellsc
        156
    wellsc  
       2021-12-30 19:07:15 +08:00
    亲手维护过更加恶心的代码,一点都笑不出来
    einq7
        157
    einq7  
       2021-12-30 19:20:27 +08:00
    @HolmLoh #146 这个是更新方法的 Pro 版本?
    yurong333333
        158
    yurong333333  
       2021-12-30 19:43:22 +08:00
    人人框架的 controller 层的 page 查询也用 map 入参。。。不知道大佬们怎么看
    bestwaytowait
        159
    bestwaytowait  
       2021-12-30 19:52:50 +08:00
    map 是有可以理解的方向的啊,主要命名和 map get 之后可能的 exception 吧
    donggexiongdi
        160
    donggexiongdi  
       2021-12-30 20:29:38 +08:00
    挺好啊

    还想怎么
    HunterPan
        161
    HunterPan  
       2021-12-30 20:39:34 +08:00 via iPhone
    还是太年轻,再垃圾的代码也见过,指导下再看看有进度没有
    Arainc
        162
    Arainc  
       2021-12-30 20:45:14 +08:00
    我刚把截图发给我老婆看了下,我老婆说这个写的正常,哈哈哈哈哈哈哈
    Bijiabo
        163
    Bijiabo  
       2021-12-30 20:56:04 +08:00
    被同事磨练的我看了之后只想说一句:这算啥,小意思 T_T
    xtinput
        164
    xtinput  
       2021-12-30 22:46:13 +08:00
    post application/json 接口传给后台不就是一个字典吗?
    post application/x-www-form-urlencoded 提交那就要一个参数一个参数定义了

    对于 Java 我也不懂,我是客户端开发的
    xtinput
        165
    xtinput  
       2021-12-30 22:49:30 +08:00
    遇到最恶心的接口是 list 和直接 string 传参,iOS 的主流网络请求框架都是字典传参,如果出现数组和直接丢 string 的只能用原生直接设置 body
    redford42
        166
    redford42  
       2021-12-30 23:32:15 +08:00
    他很厉害,他考零分
    yzbythesea
        167
    yzbythesea  
       2021-12-31 05:11:04 +08:00
    map 传参,即使 map 传参,value 也不能直接用 object

    异常处理,直接抛 null ,不处理 NPE

    命名这些跟上面比都是小问题了
    pydiff
        168
    pydiff  
       2021-12-31 07:15:19 +08:00 via iPhone
    个人感觉这种可以直接炒了,留着后患无穷,鬼知道他能给你留多少坑
    xuanbg
        169
    xuanbg  
       2021-12-31 08:33:35 +08:00
    处处都是槽点,看得我都懵逼了,以致我无从吐起。。。
    shellic
        170
    shellic  
       2021-12-31 08:56:54 +08:00
    以前写弱类型语言的吧
    banmuyutian
        171
    banmuyutian  
       2021-12-31 09:04:54 +08:00
    @einq7 #157
    槽点在于 handler 声明为 Spring Bean ,调用的时候却手动 new 一个出来
    AlanDSF
        172
    AlanDSF  
       2021-12-31 09:06:06 +08:00
    最大的草点难道不是写这么烂还写了一星期吗。。。
    rapperx2
        173
    rapperx2  
       2021-12-31 09:11:44 +08:00   ❤️ 2
    楼上那些别动不动就提培训班出来的,你读大学出来的,你牛掰,你把你写的代码拿出来看看嘛?
    niub
        174
    niub  
       2021-12-31 09:26:12 +08:00
    Code Review 的时候可以提醒一下(如果你们有),在这里吐槽解决不了什么问题。
    Renco
        175
    Renco  
       2021-12-31 09:26:41 +08:00
    看楼里有说 获取用 GET 方法。不知道各位公司的前端同事 接不接受用 GET + RequestBody 的请求模式 。虽然理论上这种请求后可以实现功能,但前端都觉得这个写法很傻逼。有些查询条件过多,用 RequestParam 又不太合适。
    Renco
        176
    Renco  
       2021-12-31 09:27:26 +08:00
    现在公司架构 一把梭, 全部用 POST 无论 增删改查统一 POST
    aino
        177
    aino  
       2021-12-31 09:28:43 +08:00
    这算个吊,我组长十年工作经验,代码写的还不如刚毕业的,查询数据库直接 for 循环,命名也是一塌糊涂,规范也是一塌糊涂,业务业务不懂,技术技术糟糕。。。。
    learninining
        178
    learninining  
       2021-12-31 09:43:05 +08:00
    写挺好,下次别写了
    AlkTTT
        179
    AlkTTT  
       2021-12-31 09:46:36 +08:00
    @chengyunbo 能啊,个人项目想怎么用怎么用;
    多人协同项目里用就好比在公交车上抽烟,有法律规定吗?没有;但合适吗?不合适
    ganning
        180
    ganning  
       2021-12-31 09:59:56 +08:00
    突然感觉几年工作经验也不是那么重要,人靠谱最重要
    ultimate
        181
    ultimate  
       2021-12-31 10:01:09 +08:00
    @HolmLoh 两年的练习生数一下槽点:
    1.Handler 是 spring 的 bean ,直接注入,不需要 new 。
    2.@Transactional 最好指定下 rollBackFor=Exception.class 。
    3.updatePro 行参过多。
    4.不用自动生成 @author ,版本控制工具能查到。
    NeoZephyr
        182
    NeoZephyr  
       2021-12-31 10:05:19 +08:00
    @HolmLoh 你们都不给入职培训的吗?
    weizhen199
        183
    weizhen199  
       2021-12-31 10:21:00 +08:00
    map 并不是什么槽点,就算 java, .Net 强约束实体也不是一开始就流行的
    fatbear
        184
    fatbear  
       2021-12-31 11:05:32 +08:00
    @Renco 前端应该不太能接受,前端的库比如 vue 常用的 axios 或者是 angular 的 http client 在 get 里放 body 确实是比较麻烦,后端调别人的接口就能接受这种写法,绝大多数后端语言在这方面都不存在障碍
    MrWhite
        185
    MrWhite  
       2021-12-31 12:02:20 +08:00
    @lybcyd 别黑了 python 不清楚,php 现在可不这样。
    orzwalker111
        186
    orzwalker111  
       2021-12-31 12:39:33 +08:00
    歪个楼,API 注释大家一般会维护更新吗?我这边也没有个统一的规定,swagger 、yapi 、wiki 接口文档各种使用吧。至于注释 param 、return 这些很少维护了
    rick2c
        187
    rick2c  
       2021-12-31 14:03:15 +08:00
    我不李姐,但我大为震惊
    hemingcn
        188
    hemingcn  
       2021-12-31 14:05:19 +08:00 via Android
    又不是不能用,,,
    lybcyd
        189
    lybcyd  
       2021-12-31 14:31:36 +08:00
    @MrWhite 不是黑,动态语言使用 map 或者类似 map 的结构来解析请求是主流做法,判断是否相等也不会有 NPE 问题。现在大多数语言进行判断都是 null safe 的,也就 Java 还必须调用 Objects.equals 这种方法。

    PHP 比如 Laravel ,这个地方直接写 $request->id === '1' 是没有任何问题的。
    aliveyang
        190
    aliveyang  
       2021-12-31 14:34:11 +08:00
    其他的看不惯还能用,但是这个 return null 确实没法用了
    littlebrother
        191
    littlebrother  
       2021-12-31 15:43:10 +08:00
    又不是不能用🐶
    litchinn
        192
    litchinn  
       2021-12-31 15:47:13 +08:00
    我都感觉是故意的呀,这么点代码每行都有槽点可太行了
    Leviathann
        193
    Leviathann  
       2021-12-31 15:52:13 +08:00
    有的人就是没有类型的意识,让他写 java 就到处都是 object 的 map ,让他写 ts 就到处都是 any
    chiuan
        194
    chiuan  
       2021-12-31 16:00:40 +08:00
    我完全看不懂。。。。。
    xylophone21
        195
    xylophone21  
       2021-12-31 17:33:53 +08:00
    看到很多人说异常,异常了全局捕获然后返回规范的 ApiResult 不行吗?
    dengji85
        196
    dengji85  
       2021-12-31 17:58:51 +08:00
    就是 if 判断有点瑕疵,我本人就是这样的,我是直接拿 string 再解析有些字段多写 dto 太麻烦了
    abeholder
        197
    abeholder  
       2021-12-31 18:09:31 +08:00
    @litchinn 是的,我感觉是楼主在钓鱼呢 。
    jqtmviyu
        198
    jqtmviyu  
       2021-12-31 18:29:29 +08:00
    @Renco 前端表示接受不了''url/:param/?key=1&key=2" 然后还要我在 get 请求 body 里再放一个参数
    q1angch0u
        199
    q1angch0u  
       2021-12-31 20:11:20 +08:00
    @murmur 冷知识……4k 是部分 browser 和 apache 的限制……rfc 里并没有限制 url 的长度……
    season8
        200
    season8  
       2021-12-31 21:53:08 +08:00
    @q1angch0u 拍案叫绝,太生动了
    1  2  3  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3038 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 11:02 · PVG 19:02 · LAX 04:02 · JFK 07:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.