重构的几个迷思

楼主: TonyQ (自立而后立人。)   2020-07-07 08:27:58
觉得最近很多文章都有些不求甚解的问题,来写点论述。
1. 重构不是什么了不起的事情
2. 变更程式码,重写旧的程式码成自己爽的样子,不一定是重构。
3. 重构是一种相对安全的工具型开发方法论,
但仍然有不少风险跟诱惑。
4. 如果你不应该或没权力改的程式码,
不要以为自称是重构就能取得变更的权力。
5. 测试(单元或整合),是一种快速验证,
程式是否符合自己预期的工具,但并不是不会犯错的保证。
因为,自己的预期可能就是错的,也可能测试相依过深,
一时半刻没有足够好的接口,测不到真正的主要情境。
6. 不论重写或重构,所有的程式码变更都有一个本质,
要把时间花在刀口上,对重要的程式码优先处理,
不重要的程式码延后处理,程式码都有优先权问题。
所谓的程式码没坏就不要修他,
本质上是“如果他的现况不影响别的事情,暂时不用管他”。
但如果他已经卡到别的功能的扩充或维护,
造成 DEBUG 困难,常出问题等,修改他就有了价值。
那个状态就又是另一回事。
======
另外,有些话我觉得讲的不够白,做点翻译:
1. 东西没坏就不要改他:
你最近改坏的东西太多了/
你最近正常改好的东西太少了/
这段扣不关你的事情你没有权限可以碰。
2. 开发应该要先做测试:
你最近改坏的东西太多了/
你最近正常改好的东西太少了
3. 要重构之前应该要先做测试:
你现在的 CODE 搞不好都已经在乱写了,
再大规模改 CODE 会不会死的更难看。
4. 这 CODE 写的很烂:
我想把 CODE 改成我看起来爽的样子
=====
坦白说,你写程式品质高的话,要怎么炫技都可以,
凡人登山要确保,很多高手可以无确保登山,
但这些人每隔几年也就会有一两个摔死上新闻。
嗯,反正说到底改程式码的权限是个政治问题。
打着重构或效能调整的名义变更是没关系,
但有没有做好,是一翻两瞪眼的事情。
个人 Credit 丧失事小,
把使用这个工具的人给搞成白痴事大,
还麻烦大家,量力而为。
自己烂,不会开发,不要牵拖工具方法论。
要重构先还是要测试先,会问这种问题的,
还不如先练习看看什么是重构,什么是测试。
作者: d1288999 (Davis)   2020-07-07 08:48:00
推推
作者: yyhsiu (hsiu)   2020-07-07 08:51:00
推前半,做事真的要看带来的价值
作者: bill0205 (善良的小孩没人爱)   2020-07-07 09:00:00
作者: Gaitz (喵喵喵)   2020-07-07 09:27:00
作者: WTFCN (WTFCN)   2020-07-07 09:36:00
台肯
作者: lovez04wj06 (车前草)   2020-07-07 10:46:00
除了半瓶水以外,真的有人喜欢没事就重购吗?
作者: asd51052000 (sky)   2020-07-07 10:53:00
是不是少了[心得]?
作者: x000032001 (版废了该走了)   2020-07-07 11:05:00
加功能就容易伴随着重构 不然经常会变得叠床架屋
作者: ian90911 (xopowo)   2020-07-07 11:38:00
中肯
作者: jhengsiaomin (siaomin)   2020-07-07 12:02:00
作者: tbpfs (http://0rz.tw/Uk989)   2020-07-07 12:37:00
中肯
作者: iceman5566 (iceman5566)   2020-07-07 12:45:00
你的标题先重构一下吧
作者: Menderca (小小英雄王)   2020-07-07 13:21:00
中肯推
作者: longlyeagle (长鹰宝宝实验室)   2020-07-07 13:21:00
E
作者: shooter555 (shooter)   2020-07-07 13:24:00
加功能伴随重构 那应该会想打写架构的人
作者: TAKADO (朕没给的你不能抢)   2020-07-07 13:32:00
改扣之前先问问自己,这段程式这么烂大家都有看到,为什么没有前人去改它,凡事必有因果。
作者: shooter555 (shooter)   2020-07-07 13:33:00
不过真的就是权限问题 权限够想把所有功能改掉 不用说物件化 拟人化都可以 每个功能帮它取个名子
作者: jixiang   2020-07-07 13:39:00
中肯
作者: x000032001 (版废了该走了)   2020-07-07 13:39:00
哪来的万用架构都不用动就可以加功能 不需要dirty work 请务必让我见识怎么设计出来的
作者: KeyFSN ( ~☼☽✩☁~ )   2020-07-07 13:54:00
就是有阿 看过才会赞叹公司花大钱请 senior 不是没有原因
作者: as30385438 (LCT)   2020-07-07 14:08:00
能搞出万用架构应该也不是senior, 是神了不然就是一堆overdesign的garbage code自以为很神
作者: Darkword1987 (黑字)   2020-07-07 14:18:00
我觉得要refactor要有理由 丑不算
作者: shooter555 (shooter)   2020-07-07 14:29:00
架构总要保留可以扩充跟相容的空间吧 加一个功能就要这就是有问题的重构
作者: hichcock (快乐一整年 ^^~~~)   2020-07-07 15:12:00
年轻人应该多鼓励重构当练功, 但是请私下做不要影响到大家工作的环境, 重构下去你才会发现很多问题包含自己缺少的, 还有旧架构的涵义等等
作者: leveger0903 (脆笛酥)   2020-07-07 15:57:00
如果该专案几乎没有后续需求的话 只是丑我可以但是常常有后续一堆需求 加上前人刻意不照公司写程式规范走 留下很多坑 东西又在线上 不得不选这条路
作者: lazarus1121 (...)   2020-07-07 17:37:00
站在管理者的立场就是没坏不要改,因为错了要担责任但站在开发者的角度,这东西不改我会很难维护跟除错这篇的立场只是偏前者
作者: joery (Lin)   2020-07-07 18:42:00
推能跑没问题再烂也不要动code,很难改不知道是否有地雷,可3会付出代价
作者: airtsubasa (伪学姊)   2020-07-07 20:35:00
如果公司没有自己的规范呢? 呵呵…
作者: simpleplanya (三十年岁月 五十亿巨资)   2020-07-07 21:36:00
推唷
作者: ericjc ( )   2020-07-07 22:24:00
推一个
作者: clamperni (肥宅牛牛)   2020-07-08 00:03:00
说真的我到现在还没遇到真的懂重构的 2倒是一堆XD
作者: Csongs (西歌)   2020-07-08 00:05:00
很多人只是看不惯别人写得而已
作者: nenpow (...)   2020-07-08 08:44:00
这篇整理得很清楚, 但多数人还是只会撷取自己想听的
作者: LuyTe (我就恶肥宅)   2020-07-08 09:53:00
premature optimization is the root of all evil重构跟讲英文很像,你会看到一堆英文很烂的人很有自信开口讲,也会看到英文很好却不敢开口的人。你会看到一堆该重构的人找理由不去重构,也会看到不该重构的人OCD发作改些没意义的东西
作者: smily134 (father134)   2020-07-08 11:01:00
作者: zx1986 (阿旭)   2020-07-08 13:49:00
> 凡人登山要确保 超中肯!Testing 先起来再说重构!
作者: overhead (overhead)   2020-07-11 15:36:00
抱持code没坏就不要改的,是烂主管。通常就是他自己coding能力差,不勤练,不好好写test。还因为他是这种人,整个团队也慢慢变这种风格。

Links booklink

Contact Us: admin [ a t ] ucptt.com