Re: [討論] 重構跟kpi的考量
※ 引述《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
你這樣反而會乾淨很多 通常能拆出去的程式碼是無屬性的
不然只是目前剛好有一樣的邏輯 而不是可以共用的程式碼
--
Sent from nPTT on my iPhone SE (2 Gen)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.233.146.252 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1645893181.A.443.html
→
02/27 01:10,
2年前
, 1F
02/27 01:10, 1F
→
02/27 01:10,
2年前
, 2F
02/27 01:10, 2F
→
02/27 01:10,
2年前
, 3F
02/27 01:10, 3F
→
02/27 01:14,
2年前
, 4F
02/27 01:14, 4F
→
02/27 01:14,
2年前
, 5F
02/27 01:14, 5F
噓
02/27 01:16,
2年前
, 6F
02/27 01:16, 6F
→
02/27 01:16,
2年前
, 7F
02/27 01:16, 7F
→
02/27 01:16,
2年前
, 8F
02/27 01:16, 8F
→
02/27 01:17,
2年前
, 9F
02/27 01:17, 9F
推
02/27 01:27,
2年前
, 10F
02/27 01:27, 10F
→
02/27 01:27,
2年前
, 11F
02/27 01:27, 11F
→
02/27 01:33,
2年前
, 12F
02/27 01:33, 12F
→
02/27 01:33,
2年前
, 13F
02/27 01:33, 13F
→
02/27 01:37,
2年前
, 14F
02/27 01:37, 14F
→
02/27 01:37,
2年前
, 15F
02/27 01:37, 15F
推
02/27 02:23,
2年前
, 16F
02/27 02:23, 16F
推
02/27 02:25,
2年前
, 17F
02/27 02:25, 17F
→
02/27 02:29,
2年前
, 18F
02/27 02:29, 18F
→
02/27 02:29,
2年前
, 19F
02/27 02:29, 19F
→
02/27 02:39,
2年前
, 20F
02/27 02:39, 20F
→
02/27 03:06,
2年前
, 21F
02/27 03:06, 21F
→
02/27 03:09,
2年前
, 22F
02/27 03:09, 22F
推
02/27 03:14,
2年前
, 23F
02/27 03:14, 23F
推
02/27 09:40,
2年前
, 24F
02/27 09:40, 24F
→
02/27 09:41,
2年前
, 25F
02/27 09:41, 25F
噓
02/27 11:28,
2年前
, 26F
02/27 11:28, 26F
→
02/27 11:28,
2年前
, 27F
02/27 11:28, 27F
噓
02/27 11:48,
2年前
, 28F
02/27 11:48, 28F
→
02/27 13:42,
2年前
, 29F
02/27 13:42, 29F
→
02/27 13:42,
2年前
, 30F
02/27 13:42, 30F
→
02/27 13:42,
2年前
, 31F
02/27 13:42, 31F
→
02/27 13:44,
2年前
, 32F
02/27 13:44, 32F
→
02/27 13:44,
2年前
, 33F
02/27 13:44, 33F
→
02/27 13:50,
2年前
, 34F
02/27 13:50, 34F
→
02/27 14:46,
2年前
, 35F
02/27 14:46, 35F
→
02/27 14:46,
2年前
, 36F
02/27 14:46, 36F
→
02/27 14:46,
2年前
, 37F
02/27 14:46, 37F
→
02/27 15:17,
2年前
, 38F
02/27 15:17, 38F
推
02/28 00:08,
2年前
, 39F
02/28 00:08, 39F
推
02/28 10:19,
2年前
, 40F
02/28 10:19, 40F
→
02/28 10:19,
2年前
, 41F
02/28 10:19, 41F
→
02/28 10:19,
2年前
, 42F
02/28 10:19, 42F
→
02/28 10:19,
2年前
, 43F
02/28 10:19, 43F
→
02/28 10:21,
2年前
, 44F
02/28 10:21, 44F
→
02/28 10:21,
2年前
, 45F
02/28 10:21, 45F
討論串 (同標題文章)