說到重構,我想只要是軟體工程師應該都做過這件事情,只是小時候我們用的術語叫做「我再把我的程式碼整理一下」。長大以後我們學了一點知識,所以知道這個專有術語叫做「重構」。
在對重構這個名詞有基本瞭解以後,我們來談談重構是否要排進待辦清單裡。情況大概是有位朋友問我,你們都什麼時候作重構阿,如果 PO/PM 不排 Item 你們要怎麼做阿?
我個人覺得這是很有趣的問題。我們先來看看重構的定義
不改變軟體外在行為的前提之下改善程式碼內部結構
PO/PM 所開的 Item 通常我們希望是 End to End。簡單的來說就是使用者做了動作,然後系統有反應,假設使用者按了按鈕然後我們的系統會顯示 Hello。
那如果針對這個行為開一個重構的 Item 他會是怎麼描述?我想應該還是「使用者按了按鈕然後我們的系統會顯示 Hello」,因為重構並不改變外在行為。所以 PO/PM 怎麼知道你做了沒?要怎麼寫驗收條件?難道我們要跟 PO/PM 展示我們重構前後的程式碼嗎?我想這不是他關心的地方。
那程式碼寫的好或壞是誰該關心的呢?當然是身為軟體工程師的我們該關心的事情。有人會說 PO/PM 並沒有排時間給我們重構,所以我們沒有時間重構。
我好奇的反而是, PO/PM 都坐在你的旁邊看你寫程式嗎?然後你功能一寫完他們馬上就拿刀架著你說「不准重構,馬上寫下一個功能」不然重構應該是我們自己的責任,而不是拿別人沒有給我們時間當藉口。
不重構,就等於是在挖坑給明天的我們跳,不是嗎?