
如题,如果代码没有 bug ,也没有性能问题,是否为了追求代码的优雅、格式、项目结构的优化而去调整重构代码呢?
1 frank1256 2022-10-14 10:22:27 +08:00 会,总有人不喜欢屎的味道(闲下来的时候) |
2 zwdsix 2022-10-14 10:25:01 +08:00 我就说一句,程序员其实往往不懂自己说的“优雅”是什么意思。甚至不知道“重构”的定义。 |
3 lmshl 2022-10-14 10:26:16 +08:00 我做过,算是提升可读性吧。 把整个系统的异步模型从 Future 迁移到纯函数的 IO Monad ,重构过程中发现了一堆小 Bug ,只是运气好没走到这个分支。以及重构完了还发现访问量高于半年前但 CPU 降到原来 1/10 的样子,也是重构的小惊喜。 |
4 kaz10025 2022-10-14 10:27:36 +08:00 小项目调整无所谓 屎山你改的动? |
5 panlatent 2022-10-14 10:28:18 +08:00 自己的会。公司的以前也许会,现在不会。 |
6 s524256521 2022-10-14 10:30:13 +08:00 via Android 个人猜测,优化重构的根本原因是客户需求在不断升级,代码本身有没有问题不是关键,所以很多时候为了增强竞争力,会把没有 bug 和性能问题的代码重构上云,或者优化算法来降低成本。 |
7 wr410 2022-10-14 10:30:40 +08:00 不会,这是一个大工程,牵涉人员众多,不是你自己的东西想改就能改的 |
8 god7d 2022-10-14 10:33:08 +08:00 不会,能跑就行,直到有一天实在是无法维护了才会考虑重构 |
9 darkengine 2022-10-14 10:33:11 +08:00 会为了其他目标(可读性,可维护性)局部优化代码。至于大范围重构,最好要有充分的理由和评估。 |
10 xianyv 2022-10-14 10:37:20 +08:00 自己写的代码还有点动力,别人交到自己手上的没啥兴趣给重构 |
11 god7d 2022-10-14 10:39:36 +08:00 @s524256521 是的,一般代码有 bug 或者是写的不优雅很少会成为进行重构的动力,一般都是项目的不断迭代更新,原先的架构无法再加入新的功能或适应现有的业务模式,才会被迫进行重构。一般有经验的架构师会早早的预测到这类情况的到来,所在在项目之初就会在架构上做出预先设计。很多公司的软件 leader ,会有第一版“先完成再说,等后面用不了了大不了重构嘛”的想法,他们的重构频率会相对较快,但是这种一种错误想法,本质上也是架构师经验不足的表现。因为频繁重构严重加大开发、测试人员的工作量,也使得软件的稳定性下降,同时也可能会增加客户的学习成本(如果重构引起客户察觉的话)。 |
12 c8c 2022-10-14 10:58:03 +08:00 看情况吧。 举例: 如果扩展性不够好,而业务量增加,需要扩展,就需要重构啊。 如果 Ops 很重,也会重构,简单结构,减少 Ops 。 |
13 d119 OP 我初入门的时候,带我的一个前辈,就花了很多时间在重构上,那时候还不流行微服务这种模式,是面向对象开发模式的的中大型项目,我很清楚的记得,他每隔一段时间,(并不是一定闲下来的时候),他就重构(当然在那种项目里面,重构是要花很多时间的,因为重构是逐渐逐渐的,不可能一下就优化重构到很好),他重构到了什么地步呢,我也清除记得:一个不会写代码的项目经理,经常站在他旁边看,而且说,看他的代码跟看书一样,很明白这段代码是什么作用和意义。 |
14 garlics 2022-10-14 11:00:14 +08:00 感觉大规模的重构最主要的目的还是空降的领导想控制代码 |
15 ericgui 2022-10-14 11:01:22 +08:00 当然 TMD 要重构了,你都不知道,一个 react class component , 在我老东家, 能有 1300 行,我以为这就够屎了,新东家 1800 行,怎么样? 不是没有 bug ,而是你没测出来罢了 |
16 rb6221 2022-10-14 11:02:13 +08:00 kpi |
17 westoy 2022-10-14 11:05:16 +08:00 没 BUG 和性能问题的重构一下 可能就有了......... |
18 lujiaosama 2022-10-14 11:10:42 +08:00 不是技术驱动型的公司有哪个天天给你重构,能跑起来的代码就算再烂也是经过生产环境检验的。重构还得把之前跑过的流程全部来一遍,哪里只是改改代码的事情。 |
19 GlobalNPC 2022-10-14 11:13:54 +08:00 会的,我之前对接的开发团队,为了可读性和扩展会做比较多的重构 和他们合作比较愉快 |
20 alen0206 2022-10-14 11:23:12 +08:00 自己不接手的一般不改 |
21 d119 OP 如果是为了提高可读性作为目的,那起码代码需要有其他人读吧,如果就只是自己维护,别人根本看都不看,或者没机会看,你还重构吗 |
22 dvsilch 2022-10-14 12:13:48 +08:00 @d119 我个人倒是更愿意重构自己的代码...因为别人的业务代码,在不清楚具体业务逻辑的情况下,很容易牵一发而动全身。 但是自己的代码会有自己看得懂的注释,即使放了一段时间再回头看也能很快读懂当时的思路,并且结合当前的理解写出语法更优雅、性能更好的代码。 |
23 zwdsix 2022-10-14 12:14:06 +08:00 重写就重写吧,重构啥呀。这楼里有人能说出重构名录里的任意一个重构手法叫什么? |
24 zwdsix 2022-10-14 12:17:18 +08:00 所以他们总是会说“重构”这事“很费时”,“没时间做”,“引入更多 bug”。请问重构和 bug 、性能有啥必然关系? |
25 fox0001 2022-10-14 12:17:51 +08:00 via Android 自己的代码,会。公司的项目,一般就算了,除非有要求。重构完还得重新测试、改 bug ,一堆麻烦事。 |
26 kujio 2022-10-14 12:23:41 +08:00 有,不断尝试用新技术替代老技术,然后根据新技术尝试写一个简化版的 |
27 xuanbg 2022-10-14 13:33:59 +08:00 现在不会。因为现在只可能需要升级,绝对不需要重构。 |
29 shenlanAZ 2022-10-14 14:31:56 +08:00 不会,可能会把更好的设计思想来做下个项目。 没有性能问题优化重构和浪费时间没区别了。 |
30 296727 2022-10-14 15:17:27 +08:00 不会,做的好了不一定有奖励,做的差了一定有批评 |
32 karott7 2022-10-14 16:11:06 +08:00 小项目会,大项目就算了 |
33 aonshuy 2022-10-14 16:32:57 +08:00 重构是为了引入 bug 和性能问题吗 |
34 lcbp 2022-10-14 17:51:28 +08:00 无情重构 |
35 IsaacYoung 2022-10-14 17:52:27 +08:00 不会 |
36 sadfQED2 2022-10-14 17:55:13 +08:00 via Android 编程第一原则:只要项目还能跑,那就不要动他 编程第二原则:如果项目烂得没法跑了,那你人就赶紧跑 |
37 mazai 2022-10-14 18:00:12 +08:00 会,代码的第一要务就是保证看你代码的人能看懂 |
38 xiangchen2011 2022-10-14 18:13:32 +08:00 会,增加扩展性和可读性 |
39 dolphintwo 2022-10-14 18:31:09 +08:00 面向工资编程,哪来的重构,代码和程序员有一个能跑就行了 |
40 golangLover 2022-10-14 18:41:21 +08:00 via Android @lmshl 你好像是 scala 大神。对你很有印象 |
41 lmshl 2022-10-14 19:00:48 +08:00 @golangLover https://www.bilibili.com/video/BV1Qa4y1L7dj 3:07:00 开始是我,就是从 Future 迁移 IO Monad 后做的社区分享。 |
42 RicardoY 2022-10-14 19:26:47 +08:00 重构这个词被滥用的太多了,可以去翻翻书,上面有清晰的定义和什么时候应该重构的指南。重构不是为了解决程序 Bug 和提升性能... |
43 RicardoY 2022-10-14 19:30:33 +08:00 楼上这么多人,对重构的理解好像跟 Martin Fowler 都不太一样... |
44 zhuweiyou 2022-10-14 19:46:43 +08:00 别人写的,不会. 自己写的,会. |
45 golangLover 2022-10-14 20:28:08 +08:00 @lmshl 感谢你的分享! |
46 kongkongye 2022-10-14 20:34:56 +08:00 via iPhone 个人的开源或长期维护项目就会重构,为了后面维护与扩展更容易,但公司的项目,又不是一个人的代码,就没有重构的想法,而且你想重构上级也不支持,重构了还是那个功能,并没有效益的提升,重构不好出 bug 还要你背锅,不重构老是出各种 bug 问题反而能体现你的价值,造成一直很忙的假象。没办法,上级跟更上级领导不懂技术只能这样,环境如此。 |
47 kkbblzq 2022-10-14 20:56:59 +08:00 看情况,如果需求刚好改到了相关代码,我觉得需要重构,在影响范围 /时间花费可控在一定范围内的情况下我会做小规模的重构;影响较大的,工期影响比较多的,根据当时需求量和测试资源,有空余的话我会去争取 PM 支持,实在没操作空间的话那就先挂起; 重构更多的是提供可读性、可维护性、可扩展性等等,如果是自己参与长期维护的代码,合理的重构是可以降低不少维护成本的,也可以提高自己对项目代码的掌控性; 说实话,真堆屎山到堆不上去再来搞,那时候只能追求:代码和人有一个能跑就行了 |
48 yxzblue 2022-10-14 23:14:22 +08:00 没有 bug 和性能问题,就不要重构,甚至都不用改,改好了不会多你一毛钱,改烂了擦屁股擦不完 |
50 iceheart 2022-10-15 07:33:39 +08:00 via Android 测试同意么? |
51 justin2018 2022-10-15 08:38:45 +08:00 重构 怎么说咧 屎山代码不重构可以正常跑 重构后各种 Bug 年轻的时候 不懂事 见到屎山代码 就想重构 结果重构后 业务出问题了~~~ 现在转眼看 自己也代码也堆成山了 正常运行了好几年 又不是不能跑 重构自己给自己找事儿做 |
52 techon 2022-10-16 00:17:08 +08:00 没性能问题是暂时的,没 bug ?怎么可能! 除非是 helloword 。。。 |
53 secondwtq 2022-10-16 00:28:48 +08:00 也可能是为了搞千年大计,减少未来可能的 bug ... |