※ 引述《VScode (VSisBestIDEinTheWorld)》之銘言:
: 假設以下情境
: 有個功能A、B都會用到相同邏輯,且有兩份重覆的code
: (沒有unit test保護,而且年久失修 要加入unit test會需要更多時程)
: 現在要加入C,也會用到相同邏輯
: 身為合格的工程師 應該會把ABC重覆的部份提取出來
: 而不是讓這邏輯重覆三次
: 但以公司營運的角度來看 這次專案就只會測試C的部份
: 不應該動到A、B
: 這時就要冒著A、B壞掉風險重構,或是因為來不及加入unit test
: 就乾脆讓相同邏輯存在三個地方
: 身為專業工程師,我很想選擇重構
: 但過去的經驗告訴我
: 絕對要以kpi為最優先考量
: 於是程式充滿了註解、重覆片段
: 雖然靠著筆記、git log,能還原當時寫code的思路
: 但這些髒code就會永遠留存在程式裡
: 想問大家遇到這情況會怎麼做?
我覺得有個盲點就是 重複程式碼的邏輯
我的經驗是在需求還沒穩定前
一樣的程式碼複製到不同地方才是最佳解
你根本不知道什麼時候 某個地方要用的邏輯不同 一但要改寫的邏輯不通
你就會被共用的程式碼卡住
就如你提到的案例 你只能砍掉重寫
不然你就要很痛苦的把問題解決這時你就會寫出 共用的難以維護的程式碼 ,這反而比重複程式碼還糟糕,看了很痛苦要改還要花大量時間 測試哪邊會壞掉
另一種方式就是 C 不要共用的程式碼 獨立寫一份
之後找時間把 共用程式碼放回AB
你這樣反而會乾淨很多 通常能拆出去的程式碼是無屬性的
不然只是目前剛好有一樣的邏輯 而不是可以共用的程式碼