Re: [請益] 這種情況要怎麼重構
我這篇寫的跟原原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也不懂
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.112.12 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1593049606.A.118.html
→
06/25 10:32,
3年前
, 1F
06/25 10:32, 1F
→
06/25 10:32,
3年前
, 2F
06/25 10:32, 2F
推
06/25 10:36,
3年前
, 3F
06/25 10:36, 3F
就我所知國內不少公司是沒有在run tdd, 就算有, 稍有年紀的公司還是會有legacy code
→
06/25 10:36,
3年前
, 4F
06/25 10:36, 4F
→
06/25 10:36,
3年前
, 5F
06/25 10:36, 5F
重構當然還是從簡單的整理開始做起, snippet內的邏輯是能夠確認的;
我覺得把單元測試與重構的成功與否畫上等號是有點詭異的
※ 編輯: EricTCartman (36.231.112.12 臺灣), 06/25/2020 10:47:11
推
06/25 11:07,
3年前
, 6F
06/25 11:07, 6F
→
06/25 11:07,
3年前
, 7F
06/25 11:07, 7F
推
06/25 11:10,
3年前
, 8F
06/25 11:10, 8F
→
06/25 11:10,
3年前
, 9F
06/25 11:10, 9F
→
06/25 11:10,
3年前
, 10F
06/25 11:10, 10F
→
06/25 11:10,
3年前
, 11F
06/25 11:10, 11F
→
06/25 11:10,
3年前
, 12F
06/25 11:10, 12F
假設有10000行code, 流程會參考某個物件的狀態而變化,
今天重構其中100行, 在這100行內改變該物件的狀態, 補了測試也證明該單元沒有錯
但除此之外還有9900行, 實務上你也會把那9900行的測試補完才繼續重構嗎?
※ 編輯: EricTCartman (36.231.112.12 臺灣), 06/25/2020 11:22:56
推
06/25 11:21,
3年前
, 13F
06/25 11:21, 13F
→
06/25 11:21,
3年前
, 14F
06/25 11:21, 14F
→
06/25 11:21,
3年前
, 15F
06/25 11:21, 15F
→
06/25 11:21,
3年前
, 16F
06/25 11:21, 16F
→
06/25 11:21,
3年前
, 17F
06/25 11:21, 17F
推
06/25 11:36,
3年前
, 18F
06/25 11:36, 18F
→
06/25 11:45,
3年前
, 19F
06/25 11:45, 19F
→
06/25 11:45,
3年前
, 20F
06/25 11:45, 20F
推
06/25 12:03,
3年前
, 21F
06/25 12:03, 21F
推
06/25 12:05,
3年前
, 22F
06/25 12:05, 22F
→
06/25 12:05,
3年前
, 23F
06/25 12:05, 23F
推
06/25 12:07,
3年前
, 24F
06/25 12:07, 24F
推
06/25 12:11,
3年前
, 25F
06/25 12:11, 25F
→
06/25 12:12,
3年前
, 26F
06/25 12:12, 26F
→
06/25 12:14,
3年前
, 27F
06/25 12:14, 27F
→
06/25 12:15,
3年前
, 28F
06/25 12:15, 28F
推
06/25 12:15,
3年前
, 29F
06/25 12:15, 29F
推
06/25 12:25,
3年前
, 30F
06/25 12:25, 30F
→
06/25 12:25,
3年前
, 31F
06/25 12:25, 31F
推
06/25 12:26,
3年前
, 32F
06/25 12:26, 32F
推
06/25 12:26,
3年前
, 33F
06/25 12:26, 33F
→
06/25 12:26,
3年前
, 34F
06/25 12:26, 34F
→
06/25 12:27,
3年前
, 35F
06/25 12:27, 35F
推
06/25 12:45,
3年前
, 36F
06/25 12:45, 36F
→
06/25 14:44,
3年前
, 37F
06/25 14:44, 37F
→
06/25 14:44,
3年前
, 38F
06/25 14:44, 38F
推
06/25 17:08,
3年前
, 39F
06/25 17:08, 39F
→
06/25 17:08,
3年前
, 40F
06/25 17:08, 40F
不是重構; 但沒重構很難做改善.
重構途中也有可能踢掉重複、冗餘的計算部分
→
06/25 17:09,
3年前
, 41F
06/25 17:09, 41F
是針對10年前的code進行效能提升, 我不覺得提升效能算是做一個新feature
legacy code沒做測試這是大家都知道的事
→
06/25 18:10,
3年前
, 42F
06/25 18:10, 42F
→
06/25 18:10,
3年前
, 43F
06/25 18:10, 43F
→
06/25 18:11,
3年前
, 44F
06/25 18:11, 44F
→
06/25 18:11,
3年前
, 45F
06/25 18:11, 45F
做法一樣, 時間跟規模不會一樣, 這你認同吧
※ 編輯: EricTCartman (36.231.112.12 臺灣), 06/25/2020 21:01:02
→
06/27 01:27,
3年前
, 46F
06/27 01:27, 46F
討論串 (同標題文章)