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

维护自己以前写的代码时,会不会想抽自己一巴掌?

  •  
  •   allen945 · Dec 22, 2018 · 8129 views
    This topic created in 2878 days ago, the information mentioned may be changed or developed.

    每次维护项目的时候最怕的是对一些已有的功能进行升级改造,因为常常出现看不懂以前写的代码...

    然后先开始找以前的思路,找到思路后才敢修改代码.

    若是找不到思路,推翻重写... 每次遇到这种情况时,都想抽自己一巴掌,这 TM 写得什么鬼呀?

    不知道大家有没有过这种经历?

    来自一枚入门级菜鸟 web 开发者的心声~

    tips:

    上面指的是自己的个人项目,非公司或其他商业项目。

    71 replies  •  2018-12-26 18:14:08 +08:00
    wly19960911
    wly19960911
    Dec 22, 2018 via Android❤️17
    1
    比起抽自己一把,我更喜欢的是反思,为什么会出现这种情况,业务无关逻辑代码能不能封装掉,怎么精简业务逻辑代码才是最优选择。我现在也在学习拆分逻辑和业务代码,尽量做到业务只调用逻辑方法,表面上业务代码做到最精简的行数,但是逻辑清晰,就算注解不明确也可以更快上手。

    如果有人能一开始就做一个完整精简的东西,这个才恐怖。
    allen945
    allen945
    OP
    Dec 22, 2018
    2
    @wly19960911 学习了
    lizhenda
    lizhenda
    Dec 22, 2018
    3
    写注释,好记性不如烂笔头,工作时间越长这一点越明显
    HENQIGUAI
    HENQIGUAI
    Dec 22, 2018
    4
    会,写得什么玩意儿
    codermagefox
    codermagefox
    Dec 22, 2018❤️1
    5
    不止想抽一巴掌...想一刀捅死....
    likuku
    likuku
    Dec 22, 2018 via iPhone
    6
    单元测试重要性体现出来了,注释与文档重要性也体现出来了
    leavic
    leavic
    Dec 22, 2018❤️18
    7
    不,我经常看着以前的代码感叹:

    这 tm 是我写的?写的太好了,现在我都写不出来这么好的代码,你看看这行,太巧妙了,我真佩服当时的我,一定是某大神上身写的。
    allen945
    allen945
    OP
    Dec 22, 2018
    8
    @lizhenda 有写注释,但是不敢写多,看起来很乱
    allen945
    allen945
    OP
    Dec 22, 2018
    9
    @codermagefox ???这是我写的吗?~
    SatanFu
    SatanFu
    Dec 22, 2018
    10
    不是应该高兴吗?说明自己有进步了啊!
    allen945
    allen945
    OP
    Dec 22, 2018
    11
    @likuku 确实是
    mseasons
    mseasons
    Dec 22, 2018
    12
    这话说得,什么叫维护的时候,一个工程自己写两周,第二周看前一周的代码就想砍死自己。
    duzhihao
    duzhihao
    Dec 22, 2018
    13
    有这个想法就是进步。
    allen945
    allen945
    OP
    Dec 22, 2018
    14
    @leavic 自己都不敢相信能写出这样的代码
    sammo
    sammo
    Dec 22, 2018
    15
    就当作是隔壁二狗子写的
    allen945
    allen945
    OP
    Dec 22, 2018
    16
    @SatanFu 嗯,是这样的,看出了自己以前的不足
    s1E4GnZ4A2qGRyva
    s1E4GnZ4A2qGRyva
    Dec 22, 2018
    17
    改用中文命名试试
    allen945
    allen945
    OP
    Dec 22, 2018
    18
    @duzhihao 学习了,谢谢
    allen945
    allen945
    OP
    Dec 22, 2018
    19
    @mseasons 哈哈哈哈哈哈哈哈哈哈
    allen945
    allen945
    OP
    Dec 22, 2018
    20
    @xuanwu 不加个狗头吗
    4DAX07B8Kle4Dm6T
    4DAX07B8Kle4Dm6T
    Dec 22, 2018
    21
    这谁写的 jb 代码,神魔恋。
    卧槽这好像是我自己写的...
    s1E4GnZ4A2qGRyva
    s1E4GnZ4A2qGRyva
    Dec 22, 2018
    22
    @allen945 不加. 搜"中文代码示例之 Spring Boot 1.3.3 演示", java+mysql 中文命名
    royzxq
    royzxq
    Dec 22, 2018 via iPhone
    23
    某个人真的魔怔了,代码写的乱和中英文有什么关系,傻了吗
    wemore
    wemore
    Dec 22, 2018
    24
    有时候会真的抽自己一巴掌,给后面的自己挖坑。
    dfourc
    dfourc
    Dec 22, 2018
    25
    @leavic 您一定是高手
    wly19960911
    wly19960911
    Dec 22, 2018❤️1
    26
    @allen945 #2 不过这也只是自己的体会,业务代码真的不能写长,也最好避免回调函数过深,逻辑方法名长和多根本不是问题,反正我只用 interface 里面的东西,能传参数就是参数传,业务方法一写长,各种参数乱飞下来很痛苦的。

    业务代码有个注释也没用,只是告诉你干什么的(毕竟你改的就是业务代码),过程还得你自己看,而且业务代码也不可能一行行注释告诉你这个为什么这么做。逻辑代码就该怎么写注释就怎么写。

    其实 jQuery 是一个很好的逻辑封装的例子,里面根本不会理会你到底干什么,就只提供功能,从来都不用 this。我看了下前端的话,我推荐你去试试 ts 语言的框架,最近 vue 也要上 ts 了,因为面向对象的语言真的有很多学习的地方。

    说了正面例子我来说个反例。就以 vue 当例子说明,vue 可以调用 this 来修改 data。但是 this 用多了问题也出来了,逻辑代码各种调用 this,我在查 bug 的时候,发现每处都有 this.data 去修改值,而且回调初始化调用的方法非常多,这时候就需要我一个个排查究竟是谁去修改 data 了,从那时候开始我基本就只有 event 和 生命周期 才会修改 data 的值,其他地方只提供逻辑上的功能。
    wly19960911
    wly19960911
    Dec 22, 2018
    27
    说起来我又突然想到一个东西了。同事曾经认为 精简代码 = 好代码,减少行数代表你能写出更好的代码。我是有点不敢苟同。现在有些情况让他们多定义几个 model,都有点不肯。
    yhxx
    yhxx
    Dec 22, 2018
    28
    不会
    因为我这种过了一年也没什么进步的再写一次也并不会比之前好到哪里去。。。
    wmhx
    wmhx
    Dec 22, 2018
    29
    2 年前接了个私活, 就是把 excel 的数据导入 mysql 然后给个界面做修改再统计的过程,excel 的行和列是不固定的, 我如何在 web 界面上展示还能修改,还要不影响统计功能. 当时想破了头写的代码, 如今真是完全看不懂了, 为什么要把 excel 的数据映射成一个类,然后再转成 json 存数据库里面, ztn 的是个人才啊,
    Mac
    Mac
    Dec 22, 2018 via Android
    30
    并没有,反而佩服自己脑力强大,居然能拐这么多弯把问题解决了
    leavic
    leavic
    Dec 22, 2018 via Android
    31
    @galikeoy 不是吹牛不是扯淡,只是后来很少写底层驱动了,以前的技能就有点丢失了,这其实很正常。
    zhm1620
    zhm1620
    Dec 22, 2018
    32
    想抽死说明有进步啊··
    alakey1989
    alakey1989
    Dec 22, 2018
    33
    @yhxx 可爱
    PP
    PP
    Dec 22, 2018 via iPad
    34
    Only God knows 即视。
    sunnyadamm
    sunnyadamm
    Dec 22, 2018
    35
    关键点一定要写注释,不然。。。Only God knows
    blacklee
    blacklee
    Dec 22, 2018
    36
    入行 12 年+了,手头一个项目是 4 年前写的。我自己看着感觉还好,有时能看到有些优化空间,但不会觉得写的差了。
    当然了,回忆 6 年前看 8 年前写的东西时,有时会想骂自己傻叉。
    armoni
    armoni
    Dec 22, 2018
    37
    感叹当时的自己太厉害了,现在写不出来了
    f278478529
    f278478529
    Dec 22, 2018
    38
    想重构框架,升级 JDK。
    chanchan
    chanchan
    Dec 22, 2018
    39
    注释是不可能注释的,我宁愿多花点时间让自己的代码更易懂 更“声明式”。
    yuanfnadi
    yuanfnadi
    Dec 22, 2018 via iPhone
    40
    测试覆盖率 100% 随便怎么改,只要能跑过测试就可以了。
    BetterManIsMe
    BetterManIsMe
    Dec 22, 2018
    41
    一巴掌够吗
    OMGZui
    OMGZui
    Dec 22, 2018 via Android
    42
    很好的重构机会:doge
    32
    32
    Dec 22, 2018
    43
    比起改别人的,我更喜欢维护自己的代码.最起码自己的一直恪守规范, 业务逻辑会有注释.
    yuandfish
    yuandfish
    Dec 22, 2018
    44
    其实挺有意思,可以看到自己的不足,每次维护自己的代码都会微调一下把它改得更好 :)
    allen945
    allen945
    OP
    Dec 22, 2018
    45
    @wly19960911 非常感谢!现在一直在用 vue 开发,vue 的组件化开发蛮好的,代码可读性和简洁性很高。
    zmj1316
    zmj1316
    Dec 22, 2018
    46
    这说明相比之前,技术水平有进步了,好事
    allen945
    allen945
    OP
    Dec 22, 2018
    47
    @yhxx 说到点痛点了!!!
    connection
    connection
    Dec 22, 2018
    48
    善于分层
    数据流管控好
    代码只做当前要做的事情,拒绝过度设计。
    digimoon
    digimoon
    Dec 22, 2018
    49
    两巴掌
    kidlj
    kidlj
    Dec 22, 2018 via iPhone
    50
    // You ’ re not expected to understand this.
    des
    des
    Dec 22, 2018 via Android
    51
    @leavic 然后想了老半天才
    des
    des
    Dec 22, 2018 via Android
    52
    @leavic
    然后想了老半天才想出来是自己从某个地方抄来的
    SeaRecluse
    SeaRecluse
    Dec 22, 2018
    53
    不会,因为那是那时的我的全力了,没必要懊悔。
    ershisi
    ershisi
    Dec 22, 2018
    54
    我说实话,看我以前的代码以后我只有一个想法,不重构了重写吧。
    eslizn
    eslizn
    Dec 22, 2018
    55
    小改小修,大改重构。。。
    passerbytiny
    passerbytiny
    Dec 22, 2018
    56
    每次写完代码,以 100%覆盖率为目标,亲手写单元测试代码,保证你大脑正常时永远看得懂自己写过的代码。代价是,工作时间至少翻倍,要是写的不好,翻几倍都有可能。
    crazybinggan
    crazybinggan
    Dec 22, 2018
    57
    有时候会惊叹于自己怎么写出怎么漂亮的代码,但是看不懂啊,现在写的跟之前的一个天一个地,屎一样。
    myhot21
    myhot21
    Dec 22, 2018 via Android
    58
    每次看以前写的代码,一般都会想起,‘‘靠,这个 BUG 真的是我写的吗?为什么有 BUG,以前从不出问题。’’
    snowspace
    snowspace
    Dec 22, 2018
    59
    想把 auther 改成别人
    Aixtuz
    Aixtuz
    Dec 22, 2018
    60
    抽完了,现在打算向 #1 学习~
    huobazi
    huobazi
    Dec 22, 2018 via iPhone
    61
    用了 ruby 我看自己以前写的 C# 觉得好傻,写那么多设计模式,又没啥用
    wolfie
    wolfie
    Dec 22, 2018
    62
    这不是好事吗?
    所以各种规范文档越早看完越好。
    Visionhope
    Visionhope
    Dec 22, 2018 via Android
    63
    @leavic #7 我有时候也会有这样的感觉,感觉以前的自己写的代码也不错。
    mocxe2vwww
    mocxe2vwww
    Dec 22, 2018 via iPhone
    64
    @Mac 哈哈,深以为然。
    kelvinblood
    kelvinblood
    Dec 22, 2018 via iPad
    65
    有的,16 年的时候把自己 14 年的代码重构之后,加功能再也不揪心。

    早期的代码是以完成任务为主,新功能扩展要命。

    重构的时候都是把通用的功能往 model 里塞,相互调用尽量走广播。从此之后开发新功能就很顺利了。
    t6attack
    t6attack
    Dec 22, 2018
    66
    技术退步的人表示:以前写的代码,已经看不懂了。尴尬
    MonoLogueChi
    MonoLogueChi
    Dec 22, 2018 via Android
    67
    现在看以前自己写的代码的感觉是,这 tm 太乱了吧,不行不行,我要重构一下
    bmy
    bmy
    Dec 23, 2018
    68
    会
    fang2hou
    fang2hou
    Dec 23, 2018
    69
    现在养成习惯了,稍微复杂点的逻辑就写点注释,确保以后的自己能看懂。
    但是随着自己语言理解的加深,总是忍不住去重构一次又一次。🐶
    ttvast
    ttvast
    Dec 23, 2018
    70
    数年前写的软件,现在想升级一下,发觉自己根本看不懂,现在根本没有能力写出这样的代码
    Ritr
    Ritr
    Dec 26, 2018
    71
    我刚上班的时候会这样,不过现在不会了。
    现在写代码比较严谨,扩展性也比较好,以至于有几个变更需求我都很开心,因为没几分钟就搞定了,由此产生的愉悦感无法言说。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1465 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 104ms · UTC 10:15 · PVG 18:15 · LAX 02:15 · JFK 05:15
    ♥ Do have faith in what you're doing.