看到别人的代码,不想去改咋办? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
java253738191
V2EX    程序员

看到别人的代码,不想去改咋办?

  •  
  •   java253738191 2018-04-03 15:58:45 +08:00 8895 次点击
    这是一个创建于 2768 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • git 提交代码的注释都是“更新”,“修改”,“上线”等等

    • 变量命名都是abaa等等, 出现英文单词还拼错,把cname拼成canmedebug拼成dubug等等

    • 线上代码竟然加上assert,让程序强制 core 掉

    • 编译一大堆警告不处理

    • 自己修改了的话同事又说他本身写的很好被我修改乱了,不修的话又看不下去

    求问我这种是强迫症吗?怎么解决??

    68 条回复    2018-04-08 22:02:37 +08:00
    crisewng
        1
    crisewng  
       2018-04-03 16:05:30 +08:00
    辞职跑路
    1313213
        2
    1313213  
       2018-04-03 16:07:03 +08:00
    代码写成这样都能找到工作???
    yogogo
        3
    yogogo  
       2018-04-03 16:08:30 +08:00   1
    呆着准备背锅?
    java253738191
        4
    java253738191  
    OP
       2018-04-03 16:09:23 +08:00
    @1313213 同事级别比我高
    blaxmirror
        5
    blaxmirror  
       2018-04-03 16:10:54 +08:00
    呃...弱弱问一下什么类型的公司,你们不做 review 的吗?我们 Team 一个函数命名都得为了其他人方便理解争论个半天
    至于怎么解决,每天都跟这样的人在一起你不怕被同化吗?不跑路留到猪年吗...
    java253738191
        6
    java253738191  
    OP
       2018-04-03 16:15:19 +08:00   1
    @blaxmirror 互联网 top5 的公司,哪有什么 review 吧,都快被同化了
    Mirachael
        7
    Mirachael  
       2018-04-03 16:16:09 +08:00   5
    闷头发育,不要浪
    AltairT
        8
    AltairT  
       2018-04-03 16:20:44 +08:00 via iPhone
    @java253738191 top5 也这样鹅,我以为就小公司会有各种拼写错误,会提交时不写日志(虽然有修改文档),业务层会不做异常返回处理……

    我的想法是抽空就把代码大全之类看看,防止被他们同化
    murmur
        9
    murmur  
       2018-04-03 16:22:00 +08:00
    都现在了能靠 a aa bb 给程序跑起来的也是人才
    pexcn
        10
    pexcn  
       2018-04-03 16:24:01 +08:00
    我也看到过这样的代码,后来辞职了
    AnsonQAQ
        11
    AnsonQAQ  
       2018-04-03 16:26:50 +08:00
    猥琐发育,不要浪
    loveCoding
        12
    loveCoding  
       2018-04-03 16:28:23 +08:00
    跟 leader 商量下,先补单元测试,尽量写全一点 case
    WinMain
        13
    WinMain  
       2018-04-03 16:35:21 +08:00
    我开始思考目前的 top5 是哪几个,BAT + 京东 + 头条? 还是美团 + 头条
    blaxmirror
        14
    blaxmirror  
    nbsp;  2018-04-03 16:35:28 +08:00
    @java253738191 那就很 tricky 了,要么像楼上说的闷声发大财,做好自己的事情,要么换个项目?应该有不少流动的机会吧,这种人原则上也就是个例了,反正能离多远离多远。如果本来就过的不开心就可以开始找工作了
    java253738191
        15
    java253738191  
    OP
       2018-04-03 16:35:36 +08:00
    @loveCoding 单元测试已经被同化了,开始还老老实实写 mock,看到同事的单元测试就是写类的 main 函数,而且就一个正常的 case,我就放弃单元测试了
    catteroLo
        16
    catteroLo  
       2018-04-03 16:36:50 +08:00
    写公司代码我都是把 IDE 的拼写检查关掉的,要不然是一片黄
    wxkvEX
        17
    wxkvEX  
       2018-04-03 16:43:01 +08:00   1
    楼主简直幸福死了。我改烂代码,心烦的不行,顺手记录了一下行为,纯吐槽向:

    1.变量名 垃圾命名如 student1 ;装神弄鬼,故弄玄虚,如 crUsageId,也不解释带不带 cr 有什么区别
    2.脱裤子放屁,画蛇添足,几个多层容器倒来倒去,最后还是那些东西
    3.拼写错误 /错别字
    4.常量混乱,每个文件一套
    5.常量混乱带来的不一致问题,每个文件的值和命名方式可能不一样,但实际上是一个东西
    6.长函数 /循环,一个循环几百行,里三层外三层,靠
    7.逻辑纠结,想到哪写到哪,不考虑合理性
    8.过多的参数,最多见过 40 个形参
    9.隐含的重构风险: 代码难以理解,出错后难修改
    10.魔数
    11.重复,大同小异的代码块从来不抽象,各种复制粘贴
    shijingshijing
        18
    shijingshijing  
       2018-04-03 16:50:34 +08:00 via iPhone
    不跑留这里过六一儿童节么?
    blaxmirror
        19
    blaxmirror  
       2018-04-03 16:52:23 +08:00
    @wxkvEX 看到第 10 条笑了 hhhh,好奇他们的魔数是个什么东西
    yongjing
        20
    yongjing  
       2018-04-03 17:00:04 +08:00
    还有单元测试?
    严重影响开发进度呀!
    shijingshijing
        21
    shijingshijing  
       2018-04-03 17:02:28 +08:00 via iPhone
    @blaxmirror 是 magic number
    FFLY
        22
    FFLY  
       2018-04-03 17:07:08 +08:00
    @WinMain BAT+小米,肯定没悬念,还有个我感觉是京东,美团点评和今日头条市值没京东大应该。
    jrtzxh020
        23
    jrtzxh020  
       2018-04-03 17:35:06 +08:00
    呃,每个新来的看以前同事交接的代码,都会感觉是一坨 shi。。。
    xuchen
        24
    xuchen  
       2018-04-03 17:37:22 +08:00
    要么忍,要么滚~新人都是搞糟心的代码的~
    pynix
        25
    pynix  
       2018-04-03 17:40:41 +08:00
    辞职跑路。。
    John60676
        26
    John60676  
       2018-04-03 17:45:57 +08:00
    观察了一下,楼主是百度的?
    newmlp
        27
    newmlp  
       2018-04-03 17:49:06 +08:00
    一般局部变量我懒得写名字也是用 a,b,c,aa,bb,dd 这种起名字的( ̄ ̄)~*
    Midnight
        28
    Midnight  
       2018-04-03 17:53:49 +08:00
    https://imgur.com/GnclbaK

    看看我这边的吧。。。。
    Midnight
        29
    Midnight  
       2018-04-03 17:55:42 +08:00   7
    Lawlieti
        30
    Lawlieti  
       2018-04-03 18:06:05 +08:00
    @Midnight 这前端还不被打死?
    FenGuWu
        31
    FenGuWu  
       2018-04-03 18:06:32 +08:00 via Android
    买一本 重构改善既有代码的设计。看完就会发现久旱逢甘霖!!!美滋滋!!
    NingAnMe
        32
    NingAnMe  
       2018-04-03 18:18:55 +08:00
    到公司,已经把一套程序根据 PEP8 重构了一遍了
    ZZZZZZZZTC
        33
    ZZZZZZZZTC  
       2018-04-03 18:31:52 +08:00
    人家就是要代码写烂点,为了让自己难以被替代
    laodao1990
        34
    laodao1990  
       2018-04-03 18:42:14 +08:00
    1 万 4 千多行的类你见过吗?
    3000 多行的方法你见过吗?
    一行有几百个字符从来不格式化你见过吗?
    Biwood
        35
    Biwood  
       2018-04-03 19:09:25 +08:00
    我的原则是,如果那个人还在公司,他自己的代码自己修改,我只是给出修改意见
    woodface2233
        36
    woodface2233  
       2018-04-03 19:12:03 +08:00 via iPhone
    标准答案:走人
    lusi1990
        37
    lusi1990  
       2018-04-03 19:21:00 +08:00 via Android
    搞 c 语音的吧
    PHPer233
        38
    PHPer233  
       2018-04-03 22:14:21 +08:00 via iPhone
    煞笔写的代码。一般我碰到不写注释的代码,直接删掉,看你麻痹,不看了。鬼知道你写的什么?
    kljsandjb
        39
    kljsandjb  
       2018-04-03 22:18:00 +08:00 via iPhone
    我天天是你这种心情
    WispZhan
        40
    WispZhan  
       2018-04-03 22:21:51 +08:00
    @PHPer233 你错了,好代码不写注释也能看懂。差代码写再多注释也是垃圾。
    wangbenjun5
        41
    wangbenjun5  
       2018-04-03 22:22:56 +08:00
    还真是,我们公司不大不小,业界小有名气,进来一看代码也是一坨屎,没办法,能跑就行,没人看代码
    easylee
        42
    easylee  
       2018-04-03 22:39:13 +08:00
    @WispZhan 代码审阅能力是这么强的吗?
    vebuqi
        43
    vebuqi  
       2018-04-03 23:33:29 +08:00   1
    日常是在 9k 行的一个 js 文件里摸爬滚打。。
    whoisghost
        44
    whoisghost  
       2018-04-03 23:37:13 +08:00
    @blaxmirror 你们这 Team 我喜欢呀!你们公司在成都吗?我要去霸面!
    blaxmirror
        45
    blaxmirror  
       2018-04-03 23:55:58 +08:00
    @shijingshijing 难道我理解有问题?我只是想问这种写垃圾代码的人怎么可能会写出真正的魔数...你这突然冒个英文翻译给我是什么意思呀...一脸懵逼
    我脑海中的魔数是卡马克的浮点开方算法用的那种,所以好奇普通人写的魔数会是什么样子而已
    blaxmirror
        46
    blaxmirror  
       2018-04-03 23:58:09 +08:00
    @whoisghost 上海爱立信,成都应该也有,你可以去了解下哈哈,待遇一般但是福利不错,无奈被华为打得节节败退
    blaxmirror
        47
    blaxmirror  
       2018-04-04 00:05:41 +08:00
    @shijingshijing 我感觉我有些过分解读了,抱歉,应该就是好心提示我,无视我前一条吧~握爪
    Akkariin
        48
    Akkariin  
       2018-04-04 08:47:24 +08:00
    非常能理解楼主的心情,我现在也是这样,看以前大神们写的代码从来没有一种 GET 到的感觉,而是这 TM 的都是些什么东西?
    比如,有看过一个存储过程,调出一个问题列表,有个参数是问题类型,0 是未回答,1 是已回答,然后 2006 是所有,我当时一阵蒙蔽,然后突然又好像想到了什么,理解了他的想法,去看了眼生成日期,果然是 2006 年,我是不是也被同化了?
    grewer
        49
    grewer  
       2018-04-04 09:26:34 +08:00
    一般说 topX 那就是 X 名
    mcfog
        50
    mcfog  
       2018-04-04 09:29:39 +08:00   1
    除了 2 是实锤,别的都不好说

    1. git 的零碎提交随便写个 WIP 或者 update 之类没问题,rebase 后好好写 /merge commit 好好写就行了。甚至按团队流程,完全无视 vcs 的 message,改以 merge request / change log 等形式追踪也未尝不可
    3. 早崩溃很多时候是好事情,让程序在可疑的状态下运行比 coredump 危害大得多
    4. 完全看情况
    5. 可能是楼主心态爆炸后的沟通存在问题

    我发现很多程序员对 legacy code 缺乏敬畏,你新写的代码再好也不如 legacy code 是经过生产环境千锤百炼的,处理这些代码,是否修改,是否重构,是否重写都是非常重要又困难的决定
    peinhu
        51
    peinhu  
       2018-04-04 11:57:23 +08:00
    王垠都不敢随便动别人的代码,楼主这是准备作死吗。。。退一万步讲,即使你改好了,你和你同事的梁子就结下了
    geying
        52
    geying  
       2018-04-04 12:43:38 +08:00
    // magic
    // do not touch !
    Akagi201
        53
    Akagi201  
       2018-04-04 12:47:12 +08:00
    我还真遇见过这种人, 不得不说我太 native 了.

    人家就是要代码写烂点,为了让自己难以被替代 +1
    ShareDuck
        54
    ShareDuck  
       2018-04-04 13:10:18 +08:00
    你同事自带代码混淆功能。
    caiyue1993
        55
    caiyue1993  
       2018-04-04 13:13:30 +08:00
    看了楼上的发言,不太想在 v 站回复了都...现在码农还是太多了,软件工程师还是少得可怜...
    bullettrain1433
        56
    bullettrain1433  
       2018-04-04 13:14:42 +08:00
    @ShareDuck 23333,墙都不扶
    ghostman
        57
    ghostman  
       2018-04-04 13:16:02 +08:00
    不要改别人的代码,让他自己改。
    micean
        58
    micean  
       2018-04-04 13:38:26 +08:00
    公司的拼写错误已经多到治好了我的强迫症
    nl101531
        59
    nl101531  
       2018-04-04 13:52:40 +08:00
    为了同事友谊,不要改.
    ycqueen
        60
    ycqueen  
       2018-04-04 14:10:45 +08:00
    来我们公司吧,嘻嘻,你不会有这种烦恼,我们公司在北京望京哦,求关注,求回复
    Tyris
        61
    Tyris  
       2018-04-04 14:24:09 +08:00 via Android
    @Midnight 可以,省了找混淆器的麻烦:doge:
    whatTheGhost
        62
    whatTheGhost  
       2018-04-04 17:05:31 +08:00
    线上代码强制 core 这个不一定是黑点。比如我用了 libuv,libuv Release 编译也有 assert 强制 core,这个还改不了。有时候已经是错误了,还不如早崩。

    本人之前的同事,工作三年甚至还没养成代码缩进习惯(毕业于某 CS 专业比较好的 985 ),喜欢到处复制粘贴代码(比如需求改了,把 xxx 函数内代码复制一下,改名 xxx2 ),完全没有时间 /空间复杂度概念,喜欢到处飞全局变量,用全局变量来做线程同步……
    gjquoiai
        63
    gjquoiai  
       2018-04-04 17:08:20 +08:00
    https://imgur.com/a/iJcc0
    凑合活着呗 ┑( ̄Д  ̄)┍
    gjquoiai
        64
    gjquoiai  
       2018-04-04 17:09:14 +08:00
    gjquoiai
        65
    gjquoiai  
       2018-04-04 17:10:52 +08:00
    @gjquoiai
    二连失败 _(:з)∠)_
    sampeng
        66
    sampeng  
       2018-04-04 17:19:29 +08:00
    1。如果这是一个一个人开发的项目,这么写未尝不可。工具是服务人的,不是人去完美服从工具。

    2.拼写错误不能忍,这个倒是可以吐槽一下。。但 a。a。b 这样的。看情况。如果是在非常小的函数里面。比如就 5-6 行。。我经常写 tmp 啊。tmp1.tmp2 之类的。以前我也很反感。后来发现真没那么多词去形容中间态或者临时用的。大函数除外。。大的主业务逻辑绝逼不能这么搞。。会死人的。。。其实你去看看其他源码。比如 git。。说实话,我简直看得想一头撞死在墙上。。第一版功能少,勉强还能看。看最新版。。。真的心里在呐喊,tm 什么玩意。。。到处都神奇数字,神奇变量,全局变量到处飞到处初始化。。。

    3.看情况,assert 如字面含义,绝逼 100%不可能会是异常的。如果是异常了。直接崩溃未尝不可。你得赶紧处理。但如果要求 100%不能崩的。。所以看业务。最近写 rust。。原先特别担心写 unwrap。。后来发现其实没那么糟糕。。就随心所欲了。。。

    4.依然看情况,老代码。可能是一个开发用几天时间赶工赶出来的。根本没时间去处理。。。

    5.不要主动去修改任何别人的代码!!除非你提前跟他说,你需要重构,怎么重构巴拉巴拉。否则就是自讨苦吃。。。
    wjm2038
        67
    wjm2038  
       2018-04-05 06:33:43 +08:00 via Android
    @blaxmirror 不明所以的赋值吧,我是这么理解的
    whoisghost
        68
    whoisghost  
       2018-04-08 22:02:37 +08:00
    @blaxmirror 呃,那成都就可能不会像你们 team 那么好了,毕竟是团队,不是整个公司。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2557 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 13:13 PVG 21:13 LAX 06:13 JFK 09:13
    Do have faith in what you're doing.
    ubao msn 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