[心得] 花了很多時間重構卻被打槍用舊code
最近案子快收尾在收斂bug
身為救援大隊長的老人我被指派到維護一個很老的API
老API的設計已經無法滿足擴充需求
新的擴充功能造成BUG
於是我花了大量時間甚至debug到天亮甚至請無薪假
新的API經過我反覆測試各種case都完美無缺
但是code review卻被質疑:
1. 是不是沒找到root cause
2. 幹嘛改動如此大? 只不過新加一點點功能幹嘛改架構?
心中五味雜陳...
好歹我也是coding master,我說該重構了就是該開始還技術債了
更上頭還是希望用最鴕鳥的方法繼續用舊架構一堆workaound當作root cause
是該離職了嗎? QwQ
--
--
維護的是你,不是他們。所以他們只想安全牌。不會管技術
債換人厚,會多難接。一堆不知所以然的code。
所以心中五味雜陳
※ 編輯: kingofsdtw (123.241.68.207 臺灣), 09/13/2025 19:43:17code直接丟github開源全世界共享 然後特休全壓放老
人自己去解root cause啊 這還要教?
錢給到位嗎 有成長空間嗎 都沒有就走人XD
公司:能動最重要,你有看過醫院那些名醫看小病就要開刀的
嗎??XD
特別是老人家,沒事就別亂開刀了萬一有糾紛
理由一大堆不用當真
一堆公司都這樣 能動就好改這麼大做什麼 出問題你扛得
住嗎
可以重構啊,你不會等案子結束再重構?
問題是你重構完 上頭買單?其他人接手會用會改?要多
少時間熟悉你的code
就是新人同事(3-5y)解不掉才掉到我頭上的QwQ
※ 編輯: kingofsdtw (123.241.68.207 臺灣), 09/13/2025 20:33:47以上這只針對公司老人
可能只是不想要欠這種人情 也不想花錢請你重構 所以才這
樣回
很久以前我也跟你一樣 後來看開了 拿多少錢做多少事
除非上頭有交代
不然這些重構還是新東西自己改改玩玩 不會放檯面上,
頂多找面試拿來講講
那你就新舊都兼容啊 你的 pr 應該只有增加的行數沒有砍
舊邏輯
專案要先把責任切開 大雜燴下 對專案的風險感就會混雜
程式已經亂到flag亂跳...
可讀性0..
老人還被質疑喔...
是說派你去救火的人 又不滿意你的方案嗎==
他錢有給到你捨不得離職嗎 XD
上面還有更老的的人啊...
M有要你重構?如果沒有,你要重構,不應該先跟他討論?y
說到底 IC 也只是 M 的資源,資源怎麼用是M的職責和權力
事情發生後,建議可以去找M聊,解決問題 而不是想著離職
coding master是什麼鬼
如果你不確定這個決定會不會被靠腰,你可以找比你懂公
司狀況的人或者主管討論,而不是自己做決定
那你就真擴充而不是順手重構 看行數最快
除非你是決策者否則要重構要看大家意見 這不是技術好不好
我有遇到遇到跟你一樣的狀況。明明團隊 wiki 有前人
留下 guide line,寫童子軍原則:順手改掉周圍的爛
code。結果 review 後被要求全部 revert 回去,因
為 reviewer 覺得跟需求無關的變動太多,造成他的負
擔。
順手要能改前提是有測試吧 不然應該是先補測試
這是重寫,不是重構
推一樓~都到master了,講的話還沒人信喔@@...
原始任務是解bug。要開新任務(重構),請先和派任務的
人溝通。
上線前:亂一點沒關係先把東西趕出來我們再回頭重
構/ 上線後:好好的你改它幹嘛?
你的好意可能是他人的災難 有些東西還是要討論一下
再決定 不要做無效工作 忙的要死得了一個非預期的結
果 自己很挫折無意義
讓你認清現實這間公司是來甩鍋的不是來貢獻的
我只覺得coding是你 testing也是你 是一件很奇怪的事
情
這件事的問題是 事前溝通。沒說服就做 浪費彼此時間
你這也不是一天的工作吧 中間沒人反應??
該離職了
重構前稍微跟別人提一下吧…
看過一些溝通方面的書籍,原PO上層還有決策者的話,要
先說服或告知決策者,讓他們心裡有預期,看起來你做的
和決策者的預期有所出入,才會被打槍
沒先溝通好的問題
原始任務是除錯對嗎? 這樣的話,設計爛做不了就回報吧
不然把除錯做成更花資源且異動更大的重構人家也不領情
說重構可能還客氣了。如果直接變成新API,那算是改寫或
重新設計……這樣如果人家不收其實也不令人非常意外
原本維護API可以很多人維護,你這一改,只剩你知道了。這
樣真的是只有自己對嗎? 不一定喔。
你有權限負責整個專案,或整個部門的考績嗎? 沒權限的話
,這樣改。即即使技術沒問題,千萬不要認為是對的。到任何
公司都可能得罪人。
取暖喔 自以為是的重構
傻子才自己在那邊重構
通常這種情況代表沒實力的怕事裝逼仔在上位,會讓這種逼
洨上去的部門主管方向感也不是很好,如果薪資不是特別好
應該可以閃人了
不過還是要看規模,如果是一千行以內我都覺得還好。超過
一千行就真的要思考了
不用屌樓上一堆嘴重構的嫩逼,techjob都是搞硬體的廢材
,而且科技業95%都是冗員廢材,所以留言有95%怕事廢材也
合理
幹原來是softjob,那更慘了,大部分都是台灣系新創小規
模公司廢材,薪水大概半導體業1/2,更不能參考
沒人嘴重構好嗎。我們嘴的是:重構前,不先溝通。
有共識、排進去時程的重構才比較不會出現這個問題。自己
重構通常都是小規模、PR review 容易看懂的規模
怎麼有人留言看一看自己破防XDD
你如果這麼資深了 東西又有做出來 怎麼還會有人在程
式碼層面質疑你?感覺很怪 是不是有牙膏沒擠
回到這兩個問題都很合理 而且都不難回答吧 你有沒有
找到根因?修正那個根因需不需要這麼大的改動?一百
字以內就應該回答清楚的問題 答不出來先去訓練表達能
力==
你上一位接手可能也是這樣想,然後每新來一位每一位
都在重構,每次專案的程式碼都不一樣
問題是review前為啥不暴露一下你要做這件事
大家討論一下有沒有價值
你就自己單幹但是上面覺得沒用那就是沒用啊
老問題了 你想扛上面不想扛
我也遇過就是做ppt跟上面報告一輪
看到debug到天亮就想笑
鬼島慣老闆這麼多就是你這種人養的
重構要有計畫跟目標,而且定期,不是遇到問題重構
你這樣搞下去有問題怎麼知道是新問題還是原問題
跟質疑其實也沒啥關係,就是其他人聽了會覺得很危險
沒上頭指示幹嘛重構,不夠忙吧
如果是我,就先做ppt、拉會議安排code review,最終更上
面說要怎麼做就怎麼做,反正我把決策責任丟出去了,不重構
我也樂得輕鬆
資歷是老人,思維跟做事方式像社會新鮮人
所以同一間待太久也不好
理解原po的無奈,code落到自己頭上,為了改得動和長久維
護的動,願意吃虧花時間去重構,但反而被不是在第一線負
責維護的reviewer質疑而覺得沮喪。只能說這種情況是政治
和文化問題,開發文化是由有話語權和決策權的人說了算,
如果溝通無果,要就加入這種文化,要不心裡的坎過不去的
話,那就好好打算吧
你的實力壓不過別戈才會這樣
提到老api xxx 看來你這不是重構唷 改api被打槍不是
很合理嗎
推justaID
開新api就好 舊的標deprecated
這行多的是文人相輕
api 改spec 出事一定扛不住
用你的新架構有風險 你要從頭維護到底嗎 再來你明顯
不夠厲害 找不到root cause以及用最小的改動解決問
題
你以為〈只要能動就不要改〉是開玩笑的時候:
做改動前有先向上溝通嗎?或是跨組溝通?
獲得同意才做的還是你就直接做下去了?
這代表你在公司credit還不夠吧..夠力的話誰會擋...
溝通能力有待加強 美其名想解決問題 其實只是底層碼
農的美好幻想 在產品先行/功能先行的團隊就是這樣
也不見得要離職啦 可以找其他方式實現自我 參加程式
小作坊之類的 不要用工作來實現理想 那是賺錢的地方
完美無缺是你自認為的,隱藏沒爆的可能比你想像的多
以前的公司發生過,要求重構→開需求→寫完測完→「還能
跑就不用換了」,浪費我時間
有給你薪水就沒浪費你時間啦,別學原PO沒事自幹就好
老氣 沒先確認過就自己改了嗎?
如果已經在公司扛這麼久,說明清楚後還不被上頭信任 我
是會直接走人
這種上頭的 code review 當耳邊風就好,看有沒有機會加
薪繼續忍上頭,或升遷為上頭,沒機會就換了吧
13
分享我遇過的鬼故事 某公司裡面有A team跟B team B team負責維護的是一個堪稱屎山等級的legacy code A team覺得B team維護的程式碼真他媽臭 隔了一個module都能聞到臭味 花費了半年多 去寫了一個跟功能99%像的程式碼 然後也有unit tests13
我的建議是: 1. 要幹嘛要先講 2. 要耗用的資源多少要先講 3. 要達成的目標是啥要先講 還技術債也要看怎麼還,該決定的人去決定,10
問題是, 第一,責任: 你的責任是對整個系統負責嗎? 還是只負責修好BUG ? 從文中,我看到的是後者。哪麼,你去【重構】做什麼?25
看到這篇原原PO在其他篇底下聲稱 「可讀性+100%」 忍不住來回一篇 軟體開發裡面有一件很重要的事情是知識轉移 又稱 knowledge transfer 印度仔會簡稱 KT1
喔 老屁股來說話了 話說把程式重構不是壞事 壞事是....重構的有對嗎? 有對應的回歸測試驗證你重構對嗎? 另外這些時間和風險,上面有人願意扛嗎?5
我隨便舉個最簡單的例子 二段式左轉跟圓環 為什麼大家都在罵, 但是要改掉也一堆人在罵? 因為大家都習慣了,雖然很智障,10
正確性,你是重構別人的code,意思是說,你有測完 【所有】的input 在【所有】的狀態下,的【所有】的output?? 當然要包括Exception。 至於可讀性+100%這種心理自high 的,真的無法講什麼,正如有人回應, 你寫的Code 放手一週後回頭看,相信你又要【重構】了。11
既然有人發文了,那我也來閒聊閒聊 程式碼阿,就不斷地推陳出新 新架構淘汰舊架構,舊架構不重構也遲早因為各種理由被砍掉 前公司很有遠瞻性 他們終於發現.Netframework 4.0 這東西不行了(大約20年)7
我來響應一下,要怎麼說服工程團隊領導重構 拿安全性壓他,資安這東西,大家都懂,但大家也都不專業 舊架構要嘛運行的環境有已知漏洞、要嘛依賴套件有已知漏洞 去 CVEdetails.com 查一下,整理一下已知漏洞高危清單 用魔法對付魔法,「不改的話有問題你要負責嗎?」
35
[討論] 重構跟kpi的考量假設以下情境 有個功能A、B都會用到相同邏輯,且有兩份重覆的code (沒有unit test保護,而且年久失修 要加入unit test會需要更多時程) 現在要加入C,也會用到相同邏輯 身為合格的工程師 應該會把ABC重覆的部份提取出來23
[請益] coding style差太多怎辦?大家好 小弟上上份工作快離職前 聽到新進的同事說 他都習慣把程式寫成一個一個小的function 後來離職我花了一點時間學習設計模式24
重構的幾個迷思覺得最近很多文章都有些不求甚解的問題,來寫點論述。 1. 重構不是什麼了不起的事情 2. 變更程式碼,重寫舊的程式碼成自己爽的樣子,不一定是重構。 3. 重構是一種相對安全的工具型開發方法論, 但仍然有不少風險跟誘惑。21
[討論] hard code 速度會快嗎?如題 hard code的速度會比較快嗎? 根據我經驗 hard code可以在極短時間內處理一些專案上的問題 但是專案上有高度相似的東西 藉由hard code去寫並不會比較快 反倒是多花一點時間重構 重構完畢之後 再來只要套function 修改參數 這速度會比hard code快很多23
Re: [討論] 怎樣算是一個合格的junior cpp programme針對關於 TDD 的討論另外回一篇好了 覺得用推文太長了 XD : 推 stupidlove0: 朝聖!重要的真的是unit test 08/23 18:47 : → HZYSoft: 回樓上 TDD 問題,TDD 不只要測試,還要先寫測試才寫code 08/23 21:33 : → HZYSoft: 很多人無法習慣這種順序,是否一定要 TDD 這有爭議 08/23 21:3417
Re: [討論] 重構之前要寫測試 不然不要重構這就是TAD, 一般做法是假設以前人做的是對的 拿以前的output當測資 避免以後的output跟預期結果不同 技術面的錯誤→沒有防呆/沒有釋放資源/overflow/沒有check 這應該不在討論範圍內, 也有客觀標準 行為與邏輯的部分才是有爭議的, 要嘛根本沒規格只有口傳16
Re: [問卦] 寫爛 code 會有自覺嗎大概入行一年到三年時會阿 覺得前人寫的都是糞,自己不能跟他們一樣廢 看一堆design pattern / clean code的書 覺得自己超強,要有理想 然後寫個七八年十年15
Re: [請益] 這種情況要怎麼重構我這篇寫的跟原原PO的狀況無關 ※ 引述《tbpfs ( )》之銘言: : 其實我真的不懂為什麼要急著重構 : 有好處嗎? : 一般而言,重構都是發生在農閒的時候3
Re: [請益] 這種情況要怎麼重構其實我真的不懂為什麼要急著重構 有好處嗎? 一般而言,重構都是發生在農閒的時候 就是沒有新案子在趕,老闆又要想辦法把人力資源給排滿 以免被上面丟一坨賽過來的最好理由2
Re: [請益] 這種情況要怎麼重構如果專案有deadline的壓力建議是先各自發展以不相互影響為前提,最後再用剩餘時間開 一個分支做重構。其實這就是在規劃專案時沒有一個主要主導的設計人,沒有定義從系統 到功能的分工,導致代碼重工,而且缺乏溝通。 真的建議未來有機會在主導你還是要自己學會定義好工作,先學習不寫code就可以訂出功 能以及架構。我自己工作後常常遇到工程師很喜歡自幹,還沒開始就急著寫code,而不是