每次维护项目的时候最怕的是对一些已有的功能进行升级改造,因为常常出现看不懂以前写的代码...
然后先开始找以前的思路,找到思路后才敢修改代码.
若是找不到思路,推翻重写... 每次遇到这种情况时,都想抽自己一巴掌,这 TM 写得什么鬼呀?
不知道大家有没有过这种经历?
来自一枚入门级菜鸟 web 开发者的心声~
tips:
上面指的是自己的个人项目,非公司或其他商业项目。
![]() | 1 wly19960911 2018-12-22 11:29:56 +08:00 via Android ![]() 比起抽自己一把,我更喜欢的是反思,为什么会出现这种情况,业务无关逻辑代码能不能封装掉,怎么精简业务逻辑代码才是最优选择。我现在也在学习拆分逻辑和业务代码,尽量做到业务只调用逻辑方法,表面上业务代码做到最精简的行数,但是逻辑清晰,就算注解不明确也可以更快上手。 如果有人能一开始就做一个完整精简的东西,这个才恐怖。 |
![]() | 2 allen945 OP @wly19960911 学习了 |
![]() | 3 lizhenda 2018-12-22 11:37:39 +08:00 写注释,好记性不如烂笔头,工作时间越长这一点越明显 |
4 HENQIGUAI 2018-12-22 11:42:16 +08:00 会,写得什么玩意儿 |
![]() | 5 codermagefox 2018-12-22 11:42:16 +08:00 ![]() 不止想抽一巴掌...想一刀捅死.... ![]() |
![]() | 6 likuku 2018-12-22 11:43:27 +08:00 via iPhone 单元测试重要性体现出来了,注释与文档重要性也体现出来了 |
![]() | 7 leavic 2018-12-22 11:46:02 +08:00 ![]() 不,我经常看着以前的代码感叹: 这 tm 是我写的?写的太好了,现在我都写不出来这么好的代码,你看看这行,太巧妙了,我真佩服当时的我,一定是某大神上身写的。 |
![]() | 9 allen945 OP @codermagefox ???这是我写的吗?~ |
![]() | 10 SatanFu 2018-12-22 11:48:16 +08:00 不是应该高兴吗?说明自己有进步了啊! |
![]() | 12 mseasons 2018-12-22 11:49:33 +08:00 这话说得,什么叫维护的时候,一个工程自己写两周,第二周看前一周的代码就想砍死自己。 |
![]() | 13 duzhihao 2018-12-22 11:50:33 +08:00 有这个想法就是进步。 |
![]() | 15 sammo 2018-12-22 11:51:34 +08:00 就当作是隔壁二狗子写的 |
![]() | 17 xuanwu 2018-12-22 11:53:58 +08:00 改用中文命名试试 |
![]() | 21 4DAX07B8Kle4Dm6T 2018-12-22 12:00:51 +08:00 这谁写的 jb 代码,神魔恋。 卧槽这好像是我自己写的... |
23 royzxq 2018-12-22 12:12:38 +08:00 via iPhone 某个人真的魔怔了,代码写的乱和中英文有什么关系,傻了吗 |
24 wemore 2018-12-22 12:17:16 +08:00 有时候会真的抽自己一巴掌,给后面的自己挖坑。 |
![]() | 26 wly19960911 2018-12-22 12:20:58 +08:00 ![]() @allen945 #2 不过这也只是自己的体会,业务代码真的不能写长,也最好避免回调函数过深,逻辑方法名长和多根本不是问题,反正我只用 interface 里面的东西,能传参数就是参数传,业务方法一写长,各种参数乱飞下来很痛苦的。 业务代码有个注释也没用,只是告诉你干什么的(毕竟你改的就是业务代码),过程还得你自己看,而且业务代码也不可能一行行注释告诉你这个为什么这么做。逻辑代码就该怎么写注释就怎么写。 其实 jQuery 是一个很好的逻辑封装的例子,里面根本不会理会你到底干什么,就只提供功能,从来都不用 this。我看了下前端的话,我推荐你去试试 ts 语言的框架,最近 vue 也要上 ts 了,因为面向对象的语言真的有很多学习的地方。 说了正面例子我来说个反例。就以 vue 当例子说明,vue 可以调用 this 来修改 data。但是 this 用多了问题也出来了,逻辑代码各种调用 this,我在查 bug 的时候,发现每处都有 this.data 去修改值,而且回调初始化调用的方法非常多,这时候就需要我一个个排查究竟是谁去修改 data 了,从那时候开始我基本就只有 event 和 生命周期 才会修改 data 的值,其他地方只提供逻辑上的功能。 |
![]() | 27 wly19960911 2018-12-22 12:23:06 +08:00 ![]() |
![]() | 28 yhxx 2018-12-22 12:23:19 +08:00 不会 因为我这种过了一年也没什么进步的再写一次也并不会比之前好到哪里去。。。 |
29 wmhx 2018-12-22 12:25:19 +08:00 2 年前接了个私活, 就是把 excel 的数据导入 mysql 然后给个界面做修改再统计的过程,excel 的行和列是不固定的, 我如何在 web 界面上展示还能修改,还要不影响统计功能. 当时想破了头写的代码, 如今真是完全看不懂了, 为什么要把 excel 的数据映射成一个类,然后再转成 json 存数据库里面, ztn 的是个人才啊, |
![]() | 30 Mac 2018-12-22 12:44:27 +08:00 via Android 并没有,反而佩服自己脑力强大,居然能拐这么多弯把问题解决了 |
![]() | 31 leavic 2018-12-22 12:57:48 +08:00 via Android @galikeoy 不是吹牛不是扯淡,只是后来很少写底层驱动了,以前的技能就有点丢失了,这其实很正常。 |
32 zhm1620 2018-12-22 13:01:59 +08:00 想抽死说明有进步啊 |
33 alakey1989 2018-12-22 13:09:28 +08:00 @yhxx 可爱 |
![]() | 34 PP 2018-12-22 13:09:55 +08:00 via iPad Only God knows 即视。 |
![]() | 35 sunnyadamm 2018-12-22 13:20:54 +08:00 关键点一定要写注释,不然。。。Only God knows |
36 blacklee 2018-12-22 13:24:21 +0800 入行 12 年+了,手头一个项目是 4 年前写的。我自己看着感觉还好,有时能看到有些优化空间,但不会觉得写的差了。 当然了,回忆 6 年前看 8 年前写的东西时,有时会想骂自己傻叉。 |
![]() | 37 armoni 2018-12-22 13:31:22 +08:00 感叹当时的自己太厉害了,现在写不出来了 |
38 f278478529 2018-12-22 13:54:54 +08:00 想重构框架,升级 JDK。 |
39 chanchan 2018-12-22 14:01:01 +08:00 注释是不可能注释的,我宁愿多花点时间让自己的代码更易懂 更“声明式”。 |
![]() | 40 yuanfnadi 2018-12-22 14:02:03 +08:00 via iPhone 测试覆盖率 100% 随便怎么改,只要能跑过测试就可以了。 |
41 BetterManIsMe 2018-12-22 14:04:27 +08:00 一巴掌够吗 |
![]() | 42 OMGZui 2018-12-22 14:05:57 +08:00 via Android 很好的重构机会:doge |
43 32 2018-12-22 14:36:56 +08:00 比起改别人的,我更喜欢维护自己的代码.最起码自己的一直恪守规范, 业务逻辑会有注释. |
44 yuandfish 2018-12-22 14:40:52 +08:00 其实挺有意思,可以看到自己的不足,每次维护自己的代码都会微调一下把它改得更好 :) |
![]() | 45 allen945 OP @wly19960911 非常感谢!现在一直在用 vue 开发,vue 的组件化开发蛮好的,代码可读性和简洁性很高。 |
![]() | 46 zmj1316 2018-12-22 14:41:46 +08:00 这说明相比之前,技术水平有进步了,好事 |
48 connection 2018-12-22 14:46:42 +08:00 善于分层 数据流管控好 代码只做当前要做的事情,拒绝过度设计。 |
49 digimoon 2018-12-22 15:16:48 +08:00 两巴掌 |
![]() | 50 kidlj 2018-12-22 15:31:18 +08:00 via iPhone // You ’ re not expected to understand this. |
53 SeaRecluse 2018-12-22 15:46:36 +08:00 不会,因为那是那时的我的全力了,没必要懊悔。 |
54 ershisi 2018-12-22 16:02:40 +08:00 我说实话,看我以前的代码以后我只有一个想法,不重构了重写吧。 |
55 eslizn 2018-12-22 16:05:18 +08:00 小改小修,大改重构。。。 |
![]() | 56 passerbytiny 2018-12-22 16:15:26 +08:00 每次写完代码,以 100%覆盖率为目标,亲手写单元测试代码,保证你大脑正常时永远看得懂自己写过的代码。代价是,工作时间至少翻倍,要是写的不好,翻几倍都有可能。 |
57 crazybinggan 2018-12-22 16:41:16 +08:00 有时候会惊叹于自己怎么写出怎么漂亮的代码,但是看不懂啊,现在写的跟之前的一个天一个地,屎一样。 |
58 myhot21 2018-12-22 16:41:47 +08:00 via Android 每次看以前写的代码,一般都会想起,‘‘靠,这个 BUG 真的是我写的吗?为什么有 BUG,以前从不出问题。’’ |
![]() | 59 snowspace 2018-12-22 16:48:50 +08:00 想把 auther 改成别人 |
![]() | 60 Aixtuz 2018-12-22 17:37:23 +08:00 抽完了,现在打算向 #1 学习~ |
![]() | 61 huobazi 2018-12-22 18:13:08 +08:00 via iPhone 用了 ruby 我看自己以前写的 C# 觉得好傻,写那么多设计模式,又没啥用 |
![]() | 62 wolfie 2018-12-22 18:43:47 +08:00 这不是好事吗? 所以各种规范文档越早看完越好。 |
63 Visionhope 2018-12-22 19:01:05 +08:00 via Android @leavic #7 我有时候也会有这样的感觉,感觉以前的自己写的代码也不错。 |
64 mocxe2vwww 2018-12-22 19:05:12 +08:00 via iPhone @Mac 哈哈,深以为然。 |
![]() | 65 kelvinblood 2018-12-22 22:50:48 +08:00 via iPad 有的,16 年的时候把自己 14 年的代码重构之后,加功能再也不揪心。 早期的代码是以完成任务为主,新功能扩展要命。 重构的时候都是把通用的功能往 model 里塞,相互调用尽量走广播。从此之后开发新功能就很顺利了。 |
66 t6attack 2018-12-22 22:54:18 +08:00 技术退步的人表示:以前写的代码,已经看不懂了。尴尬 |
67 MonoLogueChi 2018-12-22 23:50:01 +08:00 via Android 现在看以前自己写的代码的感觉是,这 tm 太乱了吧,不行不行,我要重构一下 |
![]() | 68 bmy 2018-12-23 11:08:55 +08:00 会 |
![]() | 69 houshuu 2018-12-23 12:45:57 +08:00 现在养成习惯了,稍微复杂点的逻辑就写点注释,确保以后的自己能看懂。 但是随着自己语言理解的加深,总是忍不住去重构一次又一次。 |
70 ttvast 2018-12-23 22:35:29 +08:00 数年前写的软件,现在想升级一下,发觉自己根本看不懂,现在根本没有能力写出这样的代码 |
![]() | 71 Ritr 2018-12-26 18:14:08 +08:00 我刚上班的时候会这样,不过现在不会了。 现在写代码比较严谨,扩展性也比较好,以至于有几个变更需求我都很开心,因为没几分钟就搞定了,由此产生的愉悦感无法言说。 |