作者mgtsai ()
看板Soft_Job
標題Re: [閒聊] 各位工作有遇到甚麼很扯的事情嗎?
時間Wed Sep 12 00:40:44 2012
※ 引述《C6H5CH3 (........)》之銘言:
: 我也看過類似下面這一段code, 是用來判斷軟體版本做相關的處理
: bool bOldVersion; // version <= 1.2.3.0
: bool bNewVersion; // version > 1.2.3.0
: bool bNewNewVersion; // version > 1.2.4.0
既然有明確的版本範圍,那就重新命名上依義定名即可:
bool bVersionNoMoreThan_1_2_3_0;
bool bVersionAbove_1_2_3_0;
bool bVersionAbove_1_2_4_0;
bool bVersionAbove_x_y_z_u; // <== 你自己加的新版本
這樣就可以在小範圍內重構,而不用動大刀
當然有重構工具輔助更棒!
這種只改變數名稱的重構,不用太耽心程式會改到 out of control 的情況
: if(bOldVersion)
: {
: ...兩百行...
: }
: else if(bNewVersion)
: {
: ...兩百行, 跟上一段只有5~10行不同...
: }
: else if(bNewNewVersion)
: {
: ...兩百行, 跟上一段只有5~10行不同...
: }
已經存在的 code,即使你自己看起來很不順眼
但畢竟是 proven 過可以穩定執行的 code
(至少沒在客戶前出過大包的 code)
除非找到非改寫不可以上 200 + 200 + 200 = 600 行程式碼的理由
: 後來我花了很久時間思考要重寫還是定義一個bNewNewNewVersion這個變數...
: ※ 引述《CSLabor (電腦工人)》之銘言:
: : 我看過一段code
: : if(Boolean判斷式1){
: : if(Boolean判斷式2){
: : statement A;
: : }
: : else{
: : statement A;
: : }
: : }
: : else{
: : statement A;
: : }
: : 我發現後跟他講
: : 他當面拉不下臉就說:我會這樣寫 就代表這三個statement不一樣
: : 結果我把這三句貼在記事本
: : 比對都一樣
: : 事後他自知理虧後就說
: : 只是duplicate而已 有什麼好大驚小怪的
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.58.129
推 C6H5CH3:同意,如果是現在我會這樣做,只是當年太血氣方剛...XD 09/12 00:48
※ 編輯: mgtsai 來自: 114.32.58.129 (09/12 01:09)
→ dryman:這...不是本來就應該用版本控制系統來做的嗎? 09/12 07:10
→ shvanta:我跟2F有同樣的疑問 ~_~ 不過我猜大家其實都是在開玩笑吧 09/12 08:49
→ jk47tai:最可能原因 多個客戶多種版本 且無法統一 如此做省力 09/12 14:15