新入职被安排维护前人留下的'史前'项目,怎么防止砸键盘? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
allgy
V2EX    职场话题

新入职被安排维护前人留下的'史前'项目,怎么防止砸键盘?

  •  
  •   allgy 2017-09-07 18:16:38 +08:00 10346 次点击
    这是一个创建于 2956 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一堆注释代码,毫无代码格式可言,大部分时间都浪费在理逻辑,我接手前项目经过好几个人手,改的乱七八糟,每天都想砸键盘,辞职的心都有了,怎么办?

    第 1 条附言    2017-09-08 11:34:33 +08:00
    谢谢各位 v 友的安慰及建议,帖子中间因为楼主回复过快被禁止 1800s 回复你们的留言,好像还被降权了,我是手机回复的还会过快....,现在楼主在医院,因为肠胃不舒服,而且胀气很久了,想彻底检查下,希望各位 v 友要珍爱自己的身体啊,身体真的一切的前提
    第 2 条附言    2017-09-08 14:15:54 +08:00
    刚做完胃镜,活着回来了
    112 条回复    2017-09-11 16:37:59 +08:00
    1  2  
    allgy
        1
    allgy  
    OP
       2017-09-07 18:17:21 +08:00
    老项目是 php 框架 tp3.1 写的
    xeis
        2
    xeis  
       2017-09-07 18:18:26 +08:00 via Android
    重构
    allgy
        3
    allgy  
    OP
       2017-09-07 18:21:46 +08:00
    @xeis 项目耦合度太高了,都写在一起,而且现在 v 层还在用传统模板语法,php,js,搞在一起,想哭
    Light3
        4
    Light3  
       2017-09-07 18:23:46 +08:00
    幸好只是维护..开发咋整 你都不知道有没有写公共方法~
    不过我觉得砸键盘倒是不用 tp 至少还是有序可循的..
    66beta
        5
    66beta  
       2017-09-07 18:28:45 +08:00
    重构
    哦不,换框架重做!
    roys
        6
    roys  
       2017-09-07 18:32:33 +08:00
    走人吧~
    我页经历过类似项目。
    allgy
        7
    allgy  
    OP
       2017-09-07 18:42:27 +08:00
    @Light3 要是按规范写也还好~
    allgy
        8
    allgy  
    OP
       2017-09-07 18:44:00 +08:00
    @66beta 主站~太庞大了
    allgy
        9
    allgy  
    OP
       2017-09-07 18:44:22 +08:00
    @roys 搞得我都怀疑自己了
    UnisandK
        10
    UnisandK  
       2017-09-07 18:54:27 +08:00   7
    换 HHKB,砸之前想一想价格
    allgy
        11
    allgy  
    OP
       2017-09-07 19:05:03 +08:00   1
    @UnisandK 我竟然无言以对....
    scys
        12
    scys  
       2017-09-07 19:22:46 +08:00
    没法,截断一个模块出来,看看能不能一个个模块重构。
    大项目一个人要重构太难。
    Adamla
        13
    Adamla  
       201709-07 19:26:40 +08:00
    给你备多个键盘以防之
    allgy
        14
    allgy  
    OP
       2017-09-07 21:02:28 +08:00 via iPhone
    @scys 嗯嗯
    allgy
        15
    allgy  
    OP
       2017-09-07 21:03:30 +08:00 via iPhone
    @Adamla ......
    cleveryun
        16
    cleveryun  
       2017-09-07 22:34:31 +08:00 via iPhone
    @Adamla 会砸掉更多的键盘。。
    dream7758522
        17
    dream7758522  
       2017-09-07 22:38:30 +08:00 via Android
    windows 运行里输入 osk
    Marlon
        18
    Marlon  
       2017-09-07 22:42:03 +08:00 via iPhone
    慢慢理,维护还好说吧,
    chinvo
        19
    chinvo  
       2017-09-07 22:46:14 +08:00
    直接把键盘砸掉避免之后再费劲砸
    allgy
        20
    allgy  
    OP
       2017-09-07 22:53:52 +08:00 via iPhone
    @dream7758522 不明觉厉
    allgy
        21
    allgy  
    OP
       2017-09-07 22:56:52 +08:00 via iPhone
    @chinvo ...
    allgy
        22
    allgy  
    OP
       2017-09-07 22:58:44 +08:00 via iPhone
    @Marlon 目前只能这样了
    Sanko
        23
    Sanko  
       2017-09-07 23:03:36 +08:00 via Android
    删库跑路
    t123yh
        24
    t123yh  
       2017-09-07 23:27:39 +08:00 via Android
    如果浏览器兼容不用怎么考虑的话,可以尝试一下前端直接强上 Vue 进行渲染
    TuxcraFt
        25
    TuxcraFt  
       2017-09-08 01:04:20 +08:00
    告诉老板 要么涨工资 要么走人……
    cxbig
        26
    cxbig  
       2017-09-08 01:29:42 +08:00
    写新的 > 额外津贴 > 走人
    msg7086
        27
    msg7086  
       2017-09-08 02:29:51 +08:00
    维护啥?改 bug ?那就慢慢改咯。烂项目改动耗时自然偏多,平时改一个 Bug 半天,换上烂项目改一个 Bug 要两周,这很正常的。心态放平,慢慢做就是了。跟上司或者老板说清楚情况,让他们充分了解工作的难点,给你充足的时间,我觉得就足够了。毕竟是按照时间发你工钱的,同样的时间,同样的收入啊。
    cmonday
        28
    cmonday  
       2017-09-08 05:22:13 +08:00
    建议要求立项重做,好歹有个盼头。维护恶心的老代码除了培养耐心之外对个人提升没什么益处,远不如维护设计合理的项目或者开发有挑战的新项目。
    如果不答应的话,除非薪水特别诱人,还是走人吧。
    peneazy
        29
    peneazy  
       2017-09-08 05:45:07 +08:00 via Android
    看看你的上级人怎么样,人不行的话,果断走人
    sfree2005
        30
    sfree2005  
       2017-09-08 05:46:19 +08:00 via Android
    如果不能全部重构,至少可以提议部分独立的业务重构。就算是我自己的项目,看到自己一两年前写的代码我也有砸键盘的冲动,重构会是我的唯一选择。
    cxh116
        31
    cxh116  
       2017-09-08 07:19:21 +08:00 via Android
    你是没有接手过更加糟糕的,一个仓库的 php 项目,维护了 5 年多,里面有用三种框架来实现不同的功能。
    AEANWspPmj3FUhDc
        32
    AEANWspPmj3FUhDc  
       2017-09-08 07:52:33 +08:00 via Android
    再把代码恶化一下。
    等着下一个接盘侠。
    rason
        33
    rason  
       2017-09-08 08:30:34 +08:00
    以我多年经验,换一家很大可能也是这样的,骚年
    xomix
        34
    xomix  
       2017-09-08 08:32:42 +08:00
    …………没什么啊,就当学习一下反面教程就好了。
    zlhsvc
        35
    zlhsvc  
       2017-09-08 08:33:00 +08:00
    维护还好点,开发新功能才要你命
    klgd
        36
    klgd  
       2017-09-08 08:40:02 +08:00
    @66beta #5 跟框架关系不大,完全取决与人
    前几天还见了一个用 Laravel 写的像狗屎一样的项目呢
    变量随意命名 $a $b $k $v,class 文件里带个 function
    jadetang
        37
    jadetang  
       2017-09-08 08:46:42 +08:00 via Android   2
    我觉得那些劝你走人的都是在搞笑,工作中肯定会碰到遗留代码的。所谓的重写,其实也就是在造新的遗留代码罢了。大家都看过 重构 那本书,这是实践的好机会。当然,重要的是要管理好老板的预期,把事情说的严重一点。
    allgy
        38
    allgy  
    OP
       2017-09-08 09:06:13 +08:00 via iPhone
    FYK
        39
    FYK  
       2017-09-08 09:06:42 +08:00
    我们的主站版本还在 3.1 之前,不过我只是个新人,还在做基础工作,涉及不到源代码。这里就祝福一下你啦。
    allgy
        40
    allgy  
    OP
       2017-09-08 09:13:13 +08:00 via iPhone
    @t123yh 私下跟前端讨论过,为什么不搞分离,他说不想碰,最令我惊讶的是一个前端归产品部管,上级不懂技术,部门聚餐都是跟产品设计一起
    allgy
        41
    allgy  
    OP
       2017-09-08 09:14:26 +08:00 via iPhone
    @TuxcraFt 老板压根儿不懂技术,传统行业转型的
    caijihui11
        42
    caijihui11  
       2017-09-08 09:14:31 +08:00
    理理逻辑也是程序员的工作之一。 注释先别管,万一别人有用呢
    allgy
        43
    allgy  
    OP
       2017-09-08 09:17:27 +08:00 via iPhone
    @cxbig 我现在想法是坚持到明年跳槽季吧,想转前端了,说实话自己能力吧也有欠缺,能力和工作氛围是匹配的
    allgy
        44
    allgy  
    OP
       2017-09-08 09:19:57 +08:00 via iPhone
    @msg7086 嗯,差不多一天一个 bug,难的话
    allgy
        45
    allgy  
    OP
       2017-09-08 09:21:01 +08:00 via iPhone
    @cmonday 是的,耐心真的被虐很多次,但是也不否认项目里有很多值得学习的地方
    ferstar
        46
    ferstar  
       2017-09-08 09:22:16 +08:00   1
    劝走的真是够了,讲道理工作中给前人擦屁股基本上避无可避,逃得了这家逃不了下家。说说我的经历吧,前阵子刚把一个全用 Shell 和 Perl 拼起来的烂摊子收拾完毕,用 Python 重写,搞完系统性能提高了 300 倍(没错是 300 倍,主要是前面的摊子实在太烂,随便加个多线程然后并行计算就能提速)。刚接盘时全局变量满天飞,各种 function1,function2,function3 简直马勒戈壁,Perl 的那些我了个去的#$%,当时我也很绝望啊,还好坚持下来了,为啥能坚持?是因为上家辞职闪人就是接了个要把 demo 速度拉上生产环境上线的烂项目,当时走的那叫一个潇洒,裸辞近一个月才找到这家,没想到还是坑,还好填平了。
    PS:偶尔逛了下拉钩,发现上家 HR 还在招接盘侠。推荐楼主看下这本书《凤凰项目:一个 IT 运维的传奇故事》,我是很收鼓舞的
    allgy
        47
    allgy  
    OP
       2017-09-08 09:22:47 +08:00 via iPhone
    @rason
    Felldeadbird
        48
    Felldeadbird  
       2017-09-08 09:22:48 +08:00
    既定事实,基本没办法再修改风格的了。只能按照:先在小部分进行优化,确保之前的没错误。一点一点迁移到新架构中。。。
    反正,这事情很漫长的。楼主你遇到一点事情就这样,和我三年前差不多情况。不过那时候我没打算辞职。只想着重构他。
    allgy
        49
    allgy  
    OP
       2017-09-08 09:23:36 +08:00 via iPhone
    allgy
        50
    allgy  
    OP
       2017-09-08 09:26:09 +08:00 via iPhone
    @xomix 是的,我现在在里面编码都开着 psr 文档,要求自己按规范来
    allgy
      &bsp; 51
    allgy  
    OP
       2017-09-08 09:26:55 +08:00 via iPhone
    @cmonday
    allgy
        52
    allgy  
    OP
       2017-09-08 09:27:42 +08:00 via iPhone
    @zlhsvc 是的
    Qlccks2
        53
    Qlccks2  
       2017-09-08 09:28:14 +08:00
    多买几个键盘旁边放着,省得砸坏了没得用。
    l00t
        54
    l00t  
       2017-09-08 09:30:06 +08:00
    一边砸键盘一边慢慢改吧。这都走人的话还真没多少工作合适的了。维护老代码是再常见不过的工作内容了啊。
    allgy
        55
    allgy  
    OP
       2017-09-08 09:30:19 +08:00 via iPhone
    @klgd 嗯,人的因素会大一些,但是用结构好的框架本身会限制编码者遵循规范从而引导项目朝着良性发展
    x86
        56
    x86  
       2017-09-08 09:31:21 +08:00 via Android
    跟我比惨吗?手上还有个 tp3.2 的就项目,代码看的我想打人,真的是用 tp 不可怕,写的那么烂才是真的可怕
    allgy
        57
    allgy  
    OP
       2017-09-08 09:31:28 +08:00 via iPhone
    @jadetang 是的,不可能都是新需求
    abujj
        58
    abujj  
       2017-09-08 09:33:11 +08:00 via Android
    哈哈哈哈哈
    allgy
        59
    allgy  
    OP
       2017-09-08 09:33:20 +08:00 via iPhone
    @FYK 如果你是处在项目没定性阶段很幸运,至少可以一路看到整个项目是如何臃肿起来的
    allgy
        60
    allgy  
    OP
       2017-09-08 09:34:37 +08:00 via iPhone
    @caijihui11 之前看过有人讨论过,为什么一些人喜欢留注释代码,好像是 防御性开发,我也忘记了怎么说
    jswh
        61
    jswh  
       2017-09-08 09:37:33 +08:00
    重构也很有成就感啊。看一件事慢慢完成,和看一件事慢慢变好,对我来说都挺好的
    allgy
        62
    allgy  
    OP
       2017-09-08 09:37:57 +08:00 via iPhone
    @ferstar 哈哈,理解你在填坑中的心情,现在情况是 bug 接踵而来,一个压一个,他们根本不关心代码是如果优雅,只要结果就是你解决了 bug
    815lbh
        63
    815lbh  
       2017-09-08 09:39:43 +08:00
    有注释都不错了,你要知道没有注释的老项目,会让你哭。
    PazuLee
        64
    PazuLee  
       2017-09-08 09:45:46 +08:00
    其实更坑的是你老板不知道。。。。所以有机会的话先跟老板诉诉苦吧,起码让她知道你干了啥。。。这样再难怼出来也算有价值的。
    2ME
        65
    2ME  
       2017-09-08 09:57:44 +08:00
    所以是所有逻辑都写在控制器 然后模型没有一行代码的那种项目吗 ..
    nullcoder
        66
    nullcoder  
       2017-09-08 10:00:55 +08:00
    那些说重构的,你们给 PO 主写测试?
    rswl
        67
    rswl  
       2017-09-08 10:13:23 +08:00
    你看过一份 20 多 M 的 c 文件吗没有注释
    ferstar
        68
    ferstar  
       2017-09-08 10:14:29 +08:00
    @allgy 给老板讲清楚状况, 加钱加时间加 leader, 然后必须让他知道你的辛苦
    nicevar
        69
    nicevar  
       2017-09-08 10:27:37 +08:00
    维护性的工作,不要说的那么夸张,况且才四五年前的,主要算史前那一些运营商的项目都是大爆炸时代的了,不要听上面的人瞎扯,轻易的去重构,先熟悉透了做合理的小块修改,以前有个同事,年轻人太冲动,有个维护的项目跑着 100 万级别的用户,让他别乱动他非要去改一个不太熟悉地方,结果造成大面积用户无法使用,投诉电话打爆了
    SilentDepth
        70
    SilentDepth  
       2017-09-08 10:30:12 +08:00   1
    如果除了接盘别无选择的话:

    1. git init && git commit --all
    2. 按自己喜欢的风格全文格式化代码,然后 git commit
    3. 如果可以,移除掉所有未被实际使用的引用(没开发过 PHP,一些 IDE 应该有这个功能)
    4. 如果可以,整理出所有模块的依赖情况和业务线(如果这个项目存在业务线的概念相对独立的功能链)
    5. 从被依赖数最小的模块开始整理业务逻辑 & 注释 & 重构,注释写输入输出即可
    5.1. 如果可能,配合一点简单的单元测试(为了防止 Willow 无意点火饥荒梗)
    6. 调整作息,保证稳定的工作节奏,非工作时间果断避开所有跟这个项目有关的事情
    6.1. 心态决定一切

    当然,如果你有别的选择,或者实际情况已经明显超出了你的能力范围,或者老板要求明天就上线,或者有任何其他重要因素促使你拒绝 take this shit,珍爱生命,果断走人(丢锅)
    qiqico
        71
    qiqico  
       2017-09-08 10:41:01 +08:00
    管理好上级预期,列一个计划并随时更新,让上级了解你工作的艰巨,以及你付出的努力。。

    当一天和尚,撞一天钟,反正按时间领薪水的。。
    allgy
        72
    allgy  
    OP
       2017-09-08 11:01:38 +08:00 via iPhone
    @Felldeadbird 嗯,有时候其实没有太多选择,自己也是个普通人,只能凭这个吃饭,不是什么的大神,随便跳就有橄榄枝
    allgy
        73
    allgy  
    OP
       2017-09-08 11:02:36 +08:00 via iPhone
    allgy
        74
    allgy  
    OP
       2017-09-08 11:04:03 +08:00 via iPhone
    allgy
        75
    allgy  
    OP
       2017-09-08 11:04:48 +08:00 via iPhone
    @ferstar 才来没多久,老板面都见不到
    allgy
        76
    allgy  
    OP
       2017-09-08 11:06:04 +08:00 via iPhone
    @nicevar 嗯,很多 bug 就是被前人生生改出来的
    wolffn
        77
    wolffn  
       2017-09-08 11:09:26 +08:00
    刚工作的时候,都会不爽

    等工作一段时间发现,这就是工作的主旋律。
    allgy
        78
    allgy  
    OP
       2017-09-08 11:09:33 +08:00 via iPhone
    @SilentDepth 嗯,感谢给出这么详细的建议
    allgy
        79
    allgy  
    OP
       2017-09-08 11:10:32 +08:00 via iPhone
    @jswh 好痛苦....
    allgy
        80
    allgy  
    OP
       2017-09-08 11:11:24 +08:00 via iPhone
    @PazuLee 见不到老板人...
    mhycy
        81
    mhycy  
       2017-09-08 11:11:56 +08:00
    @cxh116 还好你是 PHP,我们维护过 C#同样操蛋的项目。。。。
    allgy
        82
    allgy  
    OP
       2017-09-08 11:12:29 +08:00 via iPhone
    @2ME 差不多,根本没有严格遵循 mvc
    allgy
        83
    allgy  
    OP
       2017-09-08 11:14:28 +08:00 via iPhone
    @wolffn 是的
    allgy
        84
    allgy  
    OP
       2017-09-08 11:20:41 +08:00 via iPhone
    @qiqico
    silov
        85
    silov  
       2017-09-08 12:14:36 +08:00
    问个镜像问题:项目第一个 /批开发者,如何避免后人接手的时候产生此类情绪?

    我现在就是团队的后段项目第一个开发者,尽量完善一些代码和注释,尽量规范化,但是业务变更有时候是很快的,项目要跟上进度需求很容易产生一些逻辑混乱的代码。。。这种事情又需要怎么避免呢。。。
    pandago
        86
    pandago  
       2017-09-08 12:20:23 +08:00 via iPhone
    @silov 上线之后优化代码
    fishman
        87
    fishman  
       2017-09-08 12:27:59 +08:00 via Android
    说走人的,你们都不维护项目吗?
    allgy
        88
    allgy  
    OP
       2017-09-08 12:35:52 +08:00 via iPhone
    @silov 最基本的开发手册需要有,还有就是可以完成功能后重构优化不好的代码
    qiumaoyuan
        89
    qiumaoyuan  
       2017-09-08 12:49:09 +08:00
    有能力和权力就直接改。没能力或者没权力就走。抱怨不解决问题。
    msg7086
        90
    msg7086  
       2017-09-08 13:08:35 +08:00
    对于 Append 我跟你说,单个回复里可以回复很多人,不需要一层一层回,避免触发 1800 大法。
    wangcansun
        91
    wangcansun  
       2017-09-08 13:10:34 +08:00 via iPhone
    要不要来一次重构啊,多爽
    silov
        92
    silov  
       2017-09-08 13:26:12 +08:00
    @pandago @allgy

    开发手册基本的是会整理,不过完善的没有

    至于优化重构,说起来是很轻松的,有精力、有机会自然也会一点点去做,但是公司初创阶段产品经常会会很频繁的跟着业务变动,很难抽得出时间做那么好,老板可不会给你时间等你优化架构什么的,而烂摊子本身就是这么一点点问题积累出来的。。。。。。

    以前我也老吐槽,这谁留下的代码这么烂。。。现在跟前端同事老调侃,以后进入公司的开发会不会也这么吐槽我们,看来几乎是不可避免的,只能说尽我们所能的去做好吧。。。。
    allgy
        93
    allgy  
    OP
       2017-09-08 13:35:14 +08:00 via iPhone
    @msg7086 学到了
    allgy
        94
    allgy  
    OP
       2017-09-08 13:35:55 +08:00 via iPhone
    @silov 加油
    server
        95
    server  
       2017-09-08 14:22:02 +08:00
    忍 或者 滚,
    xzg1993
        97
    xzg1993  
       2017-09-08 14:57:31 +08:00
    我真觉得我是个好人把代码都重构了恶心的代码自己都看不下去
    ashin
        98
    ashin  
       2017-09-08 15:01:11 +08:00
    我也经历过类似项目,维护过的人最后都离职了
    Michelle1991
        99
    Michelle1991  
       2017-09-08 16:36:59 +08:00
    不是好正常的事情?如果做不了赞同忍或滚,所有工作都是自己分析衡量是否可以做,是否决定做,决定就不要考虑太多,抱怨无法解决问题,尽力解决问题,尽力后无法解决自己觉得无法接受了那就滚,只是别滚到同样的坑~忌抱怨心态
    em84
        100
    em84  
       2017-09-08 16:49:58 +08:00
    胃镜做起来多爽(滑稽)
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     870 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 21:30 PVG 05:30 LAX 14:30 JFK 17:30
    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