Re: [請益] 這種情況要怎麼重構

作者: EricTCartman (阿ㄆㄧㄚˇ)   2020-06-25 09:46:44
我這篇寫的跟原原PO的狀況無關
※ 引述《tbpfs ( http://pse.is/tbpfs )》之銘言:
: 其實我真的不懂為什麼要急著重構
: 有好處嗎?
: 一般而言,重構都是發生在農閒的時候
重構有好處, 而且有不得不做的狀況
我曾經遇到效能瓶頸,
發現是在整個流程順序上只要重新調整並安插幾個預處理的階段就能大幅提升效能
但原本的code就不是很clean, 隨便一個method破500行, 一個class有7、80個method
有二十多個boolean變數當作flag在控制狀態(但其實只要用3個變數就能搞定)
並且沒有unit test作保護
所以:
1. 花時間補unit test、再重構
2. 重寫
2當然最不實際, 1很多公司也不會認同, 所以最後就是直接做重構,
效能最後當然是有出來, 可讀性也提升很多
但老實講, 做的真的很痛苦
平時順手整理code那當然是舉手之勞
用千行來計的重構絕對不想再做一次, 重構完bug還算你頭上, 爽只有爽到別人而已
很多老鳥應該都知道了,這邊建議剛出社會的新鮮人:
就算你知道重構能夠大幅提升效能改善可讀性,
也要裝作不知道, 更不要主動提出重構
被你重構code的人可能會不爽你,
自己做了工作還變多 錢還是一樣,
爽只有爽到其他同事而已
公司大家寫哪種code就跟著寫哪種, 寫爛code搞得難維護更顯得你重要, 反正pm也不懂
作者: leo5916267 (小葉)   2020-06-25 10:32:00
我個人很難對這種無可奈何妥協,所以我寧願改的很痛苦,我也不寫糞扣,反正大不了就開除我也沒差
作者: ura1210 (jack)   2020-06-25 10:36:00
大家好像很害怕重構 如果是以TDD開發的話 重構只是其中一個步驟而已 如果重構沒有建立在單元測試上 那重構可能會提早結束你的職業生涯
作者: Nitricacid (硝酸酸)   2020-06-25 11:07:00
台灣應該是要重構就塊陶吧= = 單元測試只能保護你加功能的時候不要弄壞
作者: ura1210 (jack)   2020-06-25 11:10:00
依據Martin Fowler的定義「在不改變軟體外部行為的前提下,改變其內部結構,使其更容易理解且易於修改 」,我的認知是重構並不是效能優化而是增加可閱讀性,如果沒有以單元測試案例為基礎,那麼重構就是在增加引入bug的機會
作者: TAKADO (朕沒給的你不能搶)   2020-06-25 11:21:00
原po的例子應該是他要先重構別人的code才有辦法加優化的功能進去,這種就常常改也不是,不改也不是。但是”在台灣”,要嘛重構就默默做完不要聲張,頂多就是簽入時留個到此一遊註解深藏功與名,要嘛就是你位置足夠高,可以主導架構或專案方向跟時程,不然很多時候都是自找麻煩。
作者: vi000246 (Vi)   2020-06-25 11:36:00
只能在開發相關功能時順手改 這樣才會測到比較保險
作者: ura1210 (jack)   2020-06-25 11:45:00
如果我要重構1萬行的程式 我還是會先寫單元測試 但如果考慮時程壓力 這種技術債的東西誰接誰倒楣
作者: Csongs (西歌)   2020-06-25 12:03:00
推先寫測試再重構,上線沒寫測試重構根本搞事
作者: jack529 (Jack)   2020-06-25 12:05:00
有測試重構才舒服啊,改完跑測試全過就舒坦,但寫測試才是真正地獄XD
作者: Csongs (西歌)   2020-06-25 12:07:00
另外接收別人的code重構 ,根本吃力不討好
作者: kingofsdtw (不能閒下來!!)   2020-06-25 12:11:00
雖然閉著眼睛良心上很痛苦...但是也只能等產品整個周命期過..
作者: MOONY135 (談無慾)   2020-06-25 12:14:00
我有看過拿著重構去跟公司要時間的人,通常都是.....上面會說你想重構是你的事情 但時間到東西還是要出來
作者: devilkool (對貓毛過敏的貓控)   2020-06-25 12:15:00
個人滿喜歡加新功能時順便重構 還好本來就有unit test
作者: seal0112   2020-06-25 12:25:00
重構如果不算考績, 然後還被靠腰說那是你自己平常就要維護的 你就不會想重構了
作者: comicat (可米貓)   2020-06-25 12:26:00
但有些code一整包雜在一起,很難在重構前先有單元測試..
作者: yamakazi (大安吳彥祖)   2020-06-25 12:26:00
我們公司反而很鼓勵重構,因為產品已經發展成熟沒什麼事做,只好常常重構來硬擠出一點事做
作者: comicat (可米貓)   2020-06-25 12:27:00
測試如果寫得比待測程式更複雜,也只會增加維護困難吧..
作者: tvbic   2020-06-25 12:45:00
這才是職場真實環境
作者: t64141 (榕樹)   2020-06-25 14:44:00
增改需求時順便重構,這樣出 bug 比較好解釋,否則就只能特別找出維護/效能上的改善點來說
作者: Gaitz (喵喵喵)   2020-06-25 17:08:00
這跟重構的定義不一樣吧 根本不是重構 已經是為了效能提升做的新功能了這只說明你們公司在開發 feature 根本沒有做測試而已 XD
作者: TonyQ (自立而後立人。)   2020-06-25 18:10:00
是說寫 test 也只能測到已知的問題, 我意見跟樓上一樣,這是重新開發新功能了. XD另外重構不會碰到一萬行還是一千行的問題,重構就是涵蓋問題一萬行或一千行沒有差別, 做法都是一樣的.
作者: viper9709 (阿達)   2020-06-27 01:27:00
推一樓

Links booklink

Contact Us: admin [ a t ] ucptt.com