2010-05-22 69 views
3

我花了一個月的時間寫出了一個既能處理信用卡支付又能處理電子資金轉賬的精細支付系統。我的工作在生產服務器上使用了大約一個月。客戶最近告訴我,他不再想使用電子轉帳功能。因爲我不得不與信用卡網關進行接口和通信的方式與電子資金轉賬api有很大不同(例如cc公司在http請求後立即給出交易響應,而eft公司給出交易響應5之後工作日HTTP請求),我花了很多時間寫我自己的API,以抽象的共同函數調用像何時刪除新棄用的代碼?

功能薪水(金額,pay_method,pay_freq)

功能updateRecurringSchedule(USER_ID,new_schedule)

等。

既然客戶想放棄EFT功能,那麼我爲這個抽象付款API所做的所有工作都已經過時。

我正在考慮是否應該放棄我的工作。下面是現在殺它我的親與CON:

PRO 1:消除代碼膨脹

PRO 2:新的開發人員並不需要學習我的API。他們只需要閱讀CC公司的API

專業3:由於EFT公司沒有處理經常性付款時間表,退款和驗證,我寫了自己的應用程序來執行此操作。儘管CC公司的API允許這種功能,但我選擇使用我的代碼,以便簡化我的代碼。現在EFT已經不存在了,我可以刪除所有這些令人困惑的代碼,只依靠CC公司的系統來管理經常性的計費,付款時間表,退款,驗證等等......

CON 1:雖然我可以刪除EFT代碼,移除整合不同支付系統的整個框架仍然需要時間。

CON 2:對於PRO 3,需要時間來構建與CC公司更緊密地集成支付系統的功能。

CON 3:我感到不安全刪除所有這些工作。我不認爲我會再次使用它。但是,出於某種莫名其妙的原因,我現在不太願意刪除這部作品。

CON 4:還有數據庫的問題。如果我刪除了我的業務邏輯代碼,然後對數據庫進行規範化(最終將創建一個新的數據庫模式),但由於數據遷移問題而難以恢復此功能。然而,如果我將現有的代碼與現有的數據庫保持一致,那麼開發人員要維護起來會更麻煩,但不要害怕丟失任何東西。

所以我的問題是,我應該刪除一個月的價值最近的發展?如果是,我應該立即執行還是等待X時間?

其他細節 我加CON 4

+1

有點偏離主題,但由於這是標記重構......是什麼「功能支付()」 * *做?付款?進行付款?打印付款?我見過的最好的命名建議是*函數是動詞,變量是名詞*。 – David 2010-05-22 18:27:21

+0

你是正確的,該功能實際上是所謂的工資(),該構造函數是支付()。我將修改我的問題的細節,以避免混淆 – John 2010-05-22 18:32:33

回答

3

當我讀到你的問題,你要處理定期付款時間表,退款和驗證,使用其可能會被刪除的代碼。就目前來看,代碼目前工作正常。

專業3:由於EFT公司沒有處理經常性付款時間表,退款和驗證,我寫了自己的應用程序來做到這一點。儘管CC公司的API允許這種功能,但我選擇使用我的代碼,以便簡化我的代碼。現在EFT已經不存在了,我可以刪除所有這些令人困惑的代碼,只需依靠CC公司的系統來管理經常性結算,付款時間表,退款,驗證等等......

CON 2:關於PRO 3,需要時間來構建與CC公司更緊密地集成支付系統的功能。

我認爲你忽略了這個問題,你可能會引入錯誤到當前正常運行的系統中。如果你的代碼來處理經常性支付等,是工作,你確定這是值得所有在拋至CC API?

聽起來可能有一些在做了這些改變,應在投資回報率被認爲是固有風險。此外,在談到投資回報時,您正在談論花費時間來剔除EFT代碼,對吧?否則,這是另一個不會的原因。

+0

是的你是對的。我應該詳細闡述這兩點。我不想用我的重構來引入新的錯誤(這有點像新的開發)。 MAYBE客戶將支付我重構。但如果他不這樣做,我該怎麼辦?等到代碼在重構之前無法管理? – John 2010-05-22 18:58:01

+0

直到新功能請求調用該傳遞時,我纔會傳遞重構代碼。那時候,重新計算花費的時間是合適的。這是一個招聘工作還是你保留這個代碼的權利?如果僱主擁有這項工作,那麼在缺少需求的情況下重構可能是「志願服務」,因爲您沒有要求對其進行計費的要求。如果沒有任何要求,嚴格來說,客戶不需要重構,因此不應該被要求爲它付錢......沒有Vulcan的答案,IMO。 – 2010-05-22 19:02:15

+0

這解釋了「令人費解的原因」,即使他不期望再次需要EFT功能(CON 3),OP也會立即拋棄代碼,感到不舒服。 – 2010-05-22 19:03:46

4

刪除它。沒有理由保留它。我相信你使用的是版本控制系統,所以你總是可以在不需要的時候重新獲得它。沒有人喜歡失去一個月的工作價值,但其沉沒成本。無論你是否保留它,你都沒有回到那個時間。

+0

嗨dbyme:我添加了一個CON 4的問題,振興的新功能 – John 2010-05-22 18:26:17

+1

我只想傳達給客戶端時,這不是它涉及到數據庫和數據遷移他們可以來回翻轉的情況。一旦他們確認他們對此感到滿意,我仍然會將其刪除。 – dbyrne 2010-05-22 18:28:53

8

使用VCS正確意味着永遠不必感到內疚刪除代碼。

+0

正是我來這裏說的。 – 2010-05-24 13:25:23

2

你不應該只刪除代碼,你應該刪除導致你寫代碼的要求。然後刪除您作爲該要求的結果所做的所有決定。

舉例來說,你說你需要抽象與這兩個系統的相互作用,因爲他們是如此不同。不再有兩個系統,所以刪除抽象。你因爲兩個系統而做出的任何其他決定都需要去做。

是的,你可能結業再次使用一些這段代碼的,這就是爲什麼一個版本控制系統是一件好事。但下一次你有這樣的要求時,它很可能是一個不同的第二個系統,這會導致不同的抽象。

也就是說,它會導致不同的抽象,如果你不通過保持舊代碼配合下來到你原來的抽象。

+0

關於不同抽象概率的好處! thnks! – John 2010-05-22 19:00:32