• 请不要在回答技术问题时复制粘贴 AI 生成的内容
MuscleOf2016
0D
V2EX  ›  程序员

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

  •  1
     
  •   MuscleOf2016 · Mar 1, 2019 · 5613 views
    This topic created in 2639 days ago, the information mentioned may be changed or developed.

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

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

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

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

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