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

最近一直在改写之前老项目的垃圾代码,五年前十年前的代码设计模式的变化感觉如何吗?

  •  1
     
  •   MuscleOf2016 · 2019-03-01 09:33:47 +08:00 · 4772 次点击
    这是一个创建于 1880 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为什么有人可以堂而皇之的写出如此难维护的代码??

    第 1 条附言  ·  2019-03-01 10:15:58 +08:00
    说的不好维护的代码不是五年前或者十年前的,只是好奇十年前代码和现在代码设计模式上变化大吗? 如果都遵循了,应该维护难度会相对容易点
    49 条回复    2019-03-01 17:12:58 +08:00
    as94boy
        1
    as94boy  
       2019-03-01 09:40:34 +08:00
    在错误的时间,错误的人做了错误的事,然后就这样咯。
    ThirdFlame
        2
    ThirdFlame  
       2019-03-01 09:44:15 +08:00
    另外 开发工具、技术的革新 带来很多的变化
    nicevar
        3
    nicevar  
       2019-03-01 09:45:20 +08:00
    不仅仅是时间关系,还有语言其他因素有关,五年前十年前的 c/c++项目变化能有多大
    crist
        4
    crist  
       2019-03-01 09:54:43 +08:00
    因为这个世界上垃圾程序员太多了。属于那种赚一笔是一笔的人。
    ayase252
        5
    ayase252  
       2019-03-01 09:54:50 +08:00 via iPhone
    五年前的 JavaScript 和今天的理念都变了不少
    MuscleOf2016
        6
    MuscleOf2016  
    OP
       2019-03-01 09:56:47 +08:00
    @as94boy
    @ThirdFlame
    @nicevar 其实想知道的是一些编程思想的变化,比如前端的模板,哪怕 10 年也有这样的思想。10 年的模板代码 放到现在的话,绝对比那些拼接字符串的好维护多,比较好奇那些拼接一大串字符串的人怎么想的。
    zwh2698
        7
    zwh2698  
       2019-03-01 09:57:22 +08:00 via Android   ❤️ 1
    代码好不好真的不重要,重要的是功能要求满足了,这就是好代码。因为你不是搞学术,你是工程师。
    MuscleOf2016
        8
    MuscleOf2016  
    OP
       2019-03-01 10:00:26 +08:00
    @zwh2698 只是好奇为什么不写出容易维护的代码,也不是多优秀 搞学术 优化什么的
    aaahhh123
        9
    aaahhh123  
       2019-03-01 10:00:50 +08:00
    不知道为啥,我看以前的一些项目,看起来还更直接简洁,没这么多复杂的框架,但是确实维护起来有时候会烦会很花时间
    aaahhh123
        10
    aaahhh123  
       2019-03-01 10:02:20 +08:00
    写不好维护的代码,我想的是,一个可能是懒,不想按照标准规范格式去写,二是不想别人插手?这样自己可以一直跟下去?
    MuscleOf2016
        11
    MuscleOf2016  
    OP
       2019-03-01 10:02:42 +08:00
    @aaahhh123 像现在前端框架多了,带来的学习成本稍微高点。不过总比各种垃圾代码写满了,没文档什么都没有的好
    MuscleOf2016
        12
    MuscleOf2016  
    OP
       2019-03-01 10:03:59 +08:00
    @aaahhh123 之前有时候自己写垃圾代码的时候,就是不想动脑子,怎么简单怎么来。一个 if 不行就两个,无脑撸,以多自然就不好维护了。
    lijunbo
        13
    lijunbo  
       2019-03-01 10:06:06 +08:00   ❤️ 1
    “容易维护”其实是一个很高的要求了,大多数代码的诞生仅仅是为了能运行,能运行多久是没人管的
    learnshare
        14
    learnshare  
       2019-03-01 10:09:34 +08:00
    取决于写的人有没有意识,以及有没有能力写好这段代码。跟年代关系不大
    index90
        15
    index90  
       2019-03-01 10:12:22 +08:00   ❤️ 5
    十年前的前辈,代码能一直留到现在,能让你看得到,从某种角度上来说已经很了不起了。

    五年前十年前是什么情况?不先了解就直接开喷以前的人写的代码烂。十年前会写快排就进大厂了,现在只能算是基本技能。
    抛开时间维度来讨论问题,只能说明你太嫩了。
    不是贬低楼主,这是普遍现象,没经历过十年的职业生涯,很难自己就能深刻理解。普遍都是用现在的目光,去看待“古代”的问题。

    自问一句,你如今写的代码,不管优不优雅,能让两三年后的人看到吗?
    Light3
        16
    Light3  
       2019-03-01 10:12:51 +08:00
    你要想清楚 他那个时间写代码的目的 很多的时候 都是能运行就行了..
    daimen
        17
    daimen  
       2019-03-01 10:13:15 +08:00
    以前我也是调侃以前的人,直到领导要我一个月写个 数据接收 + 事件调度 + 规则引擎 + 具体业务实现  + 自己看专业书籍整理业务规则 + 可部署可热更新+直接上线 的系统的时候,我就能理解之前的人为什么代码是这么个吊样子。 领导不懂啊,他觉得对你们写程序的来说,不是 so easy 么。
    MuscleOf2016
        18
    MuscleOf2016  
    OP
       2019-03-01 10:14:34 +08:00
    @index90 手上也没有十年前的代码 ,五年 十年只是好奇,因为工作年限才两年多,比较好奇工作的时间长的人看以前久的代码什么感觉。
    nicevar
        19
    nicevar  
       2019-03-01 10:17:08 +08:00
    @MuscleOf2016 你要说 web 前端的话这就更正常了,10 年前前端的代码在大家的脑海里应该是算“字符串”,不是代码,那时候前后端代码基本上都是同一人写的。
    cstj0505
        20
    cstj0505  
       2019-03-01 10:20:55 +08:00
    和语言有关系,不过更多是写代码的人的素养问题。

    你看看一些 glibc,postgresql 这些大神十来年前的代码,照样是好代码
    janxin
        21
    janxin  
       2019-03-01 10:21:21 +08:00
    我们只是临时实现一个功能-》哎呀这功能反馈不错,我们完善一下-》哎呀怎么这么复杂,我们还是打打补丁吧-》卧槽!祖传屎山!
    MuscleOf2016
        22
    MuscleOf2016  
    OP
       2019-03-01 10:26:18 +08:00
    @cstj0505 另外 有什么网站公开一下久远的代码的?
    smeraldo
        23
    smeraldo  
       2019-03-01 10:33:22 +08:00
    反正 gang of four 是二十几年前的东西了🙃
    code smell 也是上世纪 90s 开始流行的概念
    index90
        24
    index90  
       2019-03-01 10:33:26 +08:00
    @cstj0505 拿 glibc 和 postgresql 来比有点欠妥,这些都是基础软件。现在大部分国内开发者都是互联网开发者。
    过去的是软件产品,现在是产品软件。过去能开发软件的没有几家公司,软件就摆在那,用户自己来用,是用户适应软件。而现在是把软件包装成产品,送到用户面前,软件去适应用户。
    前者可以按照瀑布模式或者小瀑布模式开来发,软件在编写之前就已经设计好了,过程不接受变更,自然容易写出规范的代码。而后者则需要快速响应用户的需求变化,快速开发(不能说是快速迭代),快速发布是关键。
    产品如果活不下来,你代码再优美,也只剩下程序员自嗨罢了。
    iamsheep
        25
    iamsheep  
       2019-03-01 10:38:43 +08:00 via Android
    破窗效应,可维护性又不会计入绩效,又没有 code review,加班都是在写新需求(新 bug ),代码转个几手就根本没眼看了,这种事要预防根本不能依赖个人自觉,还是要优化流程。
    wee911
        26
    wee911  
       2019-03-01 10:56:22 +08:00
    @zwh2698 就因为是搞工程才要考虑代码写的好不好, 以后好维护,搞工程就是这样, 搞学术的反而是无所谓代码写的好不好,他们更关注实现算法
    Banxiaozhuan
        27
    Banxiaozhuan  
       2019-03-01 11:11:04 +08:00
    其实不是代码垃圾,而是维护这个代码的人一波又一波的换。
    新上的人在没有完全熟悉这款业务的时候又不敢随便改,等熟悉了以后,又想着跳槽,或者偷懒。
    除非遇到一个极其负责的人维护,但是这种人很少。
    所以不要喷以前的老代码写的很差,如果差,请你把他改好。
    zhenizhui
        28
    zhenizhui  
       2019-03-01 11:19:46 +08:00
    我估计需求都没搞清楚
    gamexg
        29
    gamexg  
       2019-03-01 11:20:03 +08:00
    有些是菜,有些是懒,还有一些是需求的变更逼得代码结构越来越烂。
    dorentus
        30
    dorentus  
       2019-03-01 12:02:40 +08:00
    十年前不就是才 2009 年吗,Stack Overflow 和 Github 都有了……
    inrenping
        31
    inrenping  
       2019-03-01 13:00:22 +08:00
    能稳定运行十年的代码还是有可取之处的,不要只看缺点。
    mingl0280
        32
    mingl0280  
       2019-03-01 13:19:23 +08:00
    五年十年这个时间有点短了,我司 99-05 年的代码到现在都还是很易于维护的,规范的代码很重要……
    cstj0505
        33
    cstj0505  
       2019-03-01 13:21:38 +08:00
    @MuscleOf2016 搜一下吧,很容易找到的,包括 linux 内核的。pg 的代码在官网能找到
    sugars
        34
    sugars  
       2019-03-01 13:21:49 +08:00
    有些人为了实现功能而写代码,都不往长远地考虑
    k9990009
        35
    k9990009  
       2019-03-01 13:24:00 +08:00 via Android
    开发时需求不明确,开发后需求变更,时间又逼着紧,当然代码堆砌来的快咯。给时间啥都好说
    x86
        36
    x86  
       2019-03-01 13:25:43 +08:00
    你敢保证你写的东西 5 年,10 年后还在被使用吗
    passerbytiny
        37
    passerbytiny  
       2019-03-01 13:29:04 +08:00   ❤️ 1
    设计模式可以十年不变,但成品代码 3 年不变就没前途,5 年不变就可以扔垃圾箱了。一个 5 年不变的代码,如果能用,那绝对是过度超前设计,开发成本要数倍于垃圾代码推到重做。
    jrtzxh020
        38
    jrtzxh020  
       2019-03-01 14:52:16 +08:00
    能稳定运行这么多年,代码已经很好了吧。。。
    MuscleOf2016
        39
    MuscleOf2016  
    OP
       2019-03-01 15:00:38 +08:00
    @jrtzxh020 我哭了,append 已经解释了,不是说我遇到五年十年前的代码,是讨论下五年十年前的设计模式
    gulili
        40
    gulili  
       2019-03-01 15:31:03 +08:00   ❤️ 1
    @passerbytiny 说的很有道理。我们有个项目就是从十多年前继承下来的代码,到现在已经到了没办法维护的地步了,不得不整体重构。在我看来,如果是设计模式问题,很可能是因为产品定位和需求变更,这么多年,可能产品经理,架构,开发都换了几波了,公司的业务结构重心也变化很多。之前设计的人不可能预见到 10 年后的需求是怎么样的。并且像很多大佬说的,作为工程师,设计的架构主要是满足需求,over-design 一样会给项目带来不好的结果。
    yongzhz
        41
    yongzhz  
       2019-03-01 16:11:10 +08:00
    因缺思厅
    哈哈哈哈哈啊哈哈
    berumotto
        42
    berumotto  
       2019-03-01 16:12:58 +08:00
    5 年后维护你现在写的代码的人也会发出这样的抱怨。。。。(逃
    wemore
        43
    wemore  
       2019-03-01 16:22:25 +08:00
    接替我项目的人:“为什么有人可以堂而皇之的写出如此难维护的代码??”
    yongzhz
        44
    yongzhz  
       2019-03-01 16:22:25 +08:00
    稳定压倒一切啊,革新需要莫大的勇气。
    不是每个人都有这种勇气和毅力去革新的。
    PainSwim
        45
    PainSwim  
       2019-03-01 16:30:16 +08:00
    很多时候,需求不明确,然后今天写好,明天又要改掉了,但是重写又赶上不进度,然后写出很多难以维护的代码,现在我自己都嫌弃自己写的代码。
    Kaiv2
        46
    Kaiv2  
       2019-03-01 16:35:32 +08:00
    最近在重构前两年的代码。。。
    Mohanson
        47
    Mohanson  
       2019-03-01 16:52:55 +08:00 via Android
    人家代码已经跑了 10 年了,这就是好代码
    saulshao
        48
    saulshao  
       2019-03-01 17:00:30 +08:00   ❤️ 1
    我知道模板这个概念,大约是 3 年前的事情。
    最早我写代码是大约 15 年之前了。那个时候我是一个网站的 ASP 程序员。我记得步骤如下:
    1. 连接数据库(可以共享代码),所有的页面用同样的数据库连接代码
    2. 拼接 SQL
    3. 执行 SQL
    4. 拼接 HTML 字符流。
    上面的所有步骤我记得都是用 VB 脚本完成的。当时一个页面文件里的代码分成 2 个部分,一个部分是 VB script,这部分在服务器端执行,另外一部分则是 HTML 和 Jscript,则在客户端执行。但是这两部分代码可以用<%%>一起混用,于是导致的后果就是自己写的代码,过 2 周再回去看的时候,弄不清楚某一行到底是 VB 还是 HTML....一定要在脑子里把程序过一遍。
    后来.net 出现了,我当时的感觉简直就是一个新天地,虽然没实际用于生产环境,但是确实引入了很多新的概念。
    再后来我作为 BA 开始了解 JSP,当时的想法就是:这和 ASP 没啥差异,就是把 VB 换成 Java 而已。
    其实代码架构的演化,这些年一直都是在为程序员服务,主要目标是提高代码复用程度,减少单个文件的复杂度。但是带来的后果就是整个项目的文件结构复杂度是在增加的。现在的 Flask 或者 Django 那样的框架,对于项目文件结构的要求其实比以前是提高了。
    MuscleOf2016
        49
    MuscleOf2016  
    OP
       2019-03-01 17:12:58 +08:00
    @saulshao 感谢回答,只能点击下感谢了,很多年轻的程序员 其实很难了解到这样的经历。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1120 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 18:39 · PVG 02:39 · LAX 11:39 · JFK 14:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.