作者descent (「雄辯是銀,沉默是金」)
看板Soft_Job
標題Re: [討論] 一段想重構的程式碼
時間Fri Jul 26 16:09:29 2013
我知道總是有某些 code 就是看起來不順眼,
總是想要把它改好。
我也有過類似的經驗, 但是我大多屈服了,
想辦法疊床架屋的改上去, 完成某個新功能,
這樣的結果會讓後面接手的人很倒楣,
因為會愈來愈難看, 愈來愈難改。
不過我認為這也是寫程式的人需要的技能:
在爛 code 上繼續加功能, 這難度不見得簡單於寫出好程式。
有一些理由不想重構:
時間: 公司願意給時間來做這件事情。
這是最前提, 要不然我不會想這麼做。
新的未必會比較好, 怎麼知道過了 N 天之後,
新重構的架構構好呢? 可能又需要重構。
新的程式碼穩定度一定又需要一段時間來證明它真的穩定。
指出爛 code 很容易, 但要寫出自己想像中的好程式
可能就沒那麼容易了。有沒有可能高估自己的本領了?
已經厭倦這 code, 重複的改同一份 code, 總是會帶來
厭倦, 能動就好了。
沒有愛來花時間重構它, 我喜歡寫程式, 但我不一定喜歡寫
公司的程式, 我對這樣的程式碼要求, 可能只要它不出包就行,
沒愛對它重構。
實戰經驗:
很高興的把一些程式碼整理一下 (不到重構階段),
結果程式效能降低了 (這是 linux NIC driver)。
找到最後發現是一個 static function 有無 static,
ex:
static void func1() 改成 => void func1()
或是
void func1() 改成 => static void func1()
我忘記了。就只有這樣的差異。
static keyword 是不會影響產生的 machine code,
machine code 都一樣, 不知道是不是影響了位址?
有了那次經驗, 我連整理都不敢, 老實的維持現狀。
在有愛的程式碼上就不是這樣了, 看著程式慢慢變好,
還真的有股滿足感, 你一定知道我說的那種感覺。
※ 引述《tyc5116 (累人啊....)》之銘言:
: 如題,因為不知道適合PO在哪個板問,看來看去好像這裡比較適合的樣子
: 如果不妥我再轉板
: 我在接手別人的程式後,發現他架構有需要重構的地方
: 程式分了數個小模組(a和b都是一個模組)
: class a{
: void func();
: ...
: };
: class b{
: void func();
: ...
: ;
: ...
: 其中每個模組的func程式碼都是一樣的
: 所以我想說就再拉出一個介面,並實作這個func,a和b都繼承這個介面
: 這樣這段重覆的程式碼就可以省掉了
--
要有一流的運氣, 才能邂逅一流的美女。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.125.239.51
推 typepeter:所以問題不是重構,而是修改是否正確 這才是正解 07/26 17:59
→ typepeter:所以像TonyQ大所說的,他信仰修改一定要有測試驗 是對的 07/26 18:00
推 cc1plus:沒有噓, 接爛 code 的就很幹呀, 超難追的.... 07/26 18:16
推 goliathplus:簡單說 沒看到 CODE 甚至不清楚軟體使用狀況 07/26 18:25
→ goliathplus:做出來的決定都是不準確的 07/26 18:25
→ chingwuen:compiler有可能把static function變成inline直接展開 07/27 01:10
推 coolstreet:會有不順眼的症狀+1 07/29 13:44
※ 編輯: descent 來自: 59.125.239.51 (08/20 08:27)