2011-02-01 76 views
0

這是我在我的項目中的類的簡化版本。由於獎金的計算方式與每個函數完全相同,所以我想刪除此處顯示的明顯代碼重複,並將三種不同的函數合併爲一個。但是我不確定如何提供這個新功能需要的參數。VB.Net重構刪除代碼複製

比如我目前只是路過的說法是這樣的代碼

lblVolumeBonus.Content = TestClass.VolumeBonusAmountStore(獎金)。

我想我必須圍繞基本上把這個邏輯和喜歡的東西

lblVolumeBonus.Content = TestClass.VolumeBonusAmountStore(BonusTrackerBO.StoreBonus)

調用它,但我不知道的正確的語法或者我是否在正確的軌道上。

有人可以幫助我在正確的方向嗎?

Public Class TestClass 
Public Shared Function StoreBonus(ByVal bonus As BonusTrackerBO.StoreBonus) As Double 

    Dim myBonus As Double = bonus.TicketAmount 
    Return myBonus * 5 

End Function 

Public Shared Function DistrictBonus(ByVal bonus As BonusTrackerBO.DistrictBonus) As Double 

    Dim myBonus As Double = bonus.TicketAmount 
    Return myBonus * 5 

End Function 

Public Shared Function CompanyBonus(ByVal bonus As BonusTrackerBO.CompanyBonus) As Double 

    Dim myBonus As Double = bonus.TicketAmount 
    Return myBonus * 5 

End Function 
End Class 

編輯:它可能不會有所作爲,但我已明確表示,有方程式的其他因素(我只是想保持簡單)。那麼當有其他的獎勵回調像bonus.MaximumAmount,bonus.MinimumAmount時,答案是一樣的嗎?獎勵對象有5次回調,金額根據商店,地區或公司要求而有所不同。

+0

我有點糊塗了由堆棧溢出接口。是否應將更新後的信息作爲原始帖子的編輯進行編輯,作爲對原始帖子的評論或作爲評論回覆? – 2011-02-01 17:39:11

+0

an編輯,(15chars) – Fredou 2011-02-01 18:14:09

+0

謝謝。我只是將我的評論移至原始文章作爲修改。 – 2011-02-01 18:42:21

回答

1

如何:

Public Shared Function GetBonus(ByVal bonus as Double) As Double 
    Return bonus * 5 
End Function 

如果獎金是bonus.TicketAmount。或者,如果他們都繼承了像BaseBonusClass這樣的基類。

Public Shared Function GetBonus(ByVal bonus as BaseBonusClass) As Double 
    Return bonus.TicketAmount * 5 
End Function 

編輯:或嘗試仿製藥

Public Shared Function GetBonus(Of T As BaseBonusClass)(ByVal bonus as T) As Double 
    Return bonus.TicketAmount * 5 
End Function 
2

爲什麼不是一個簡單的

Public Shared Function GiveBonus(ByVal TicketAmount As Double) As Double 
    Return TicketAmount * 5 
End Function 



lblVolumeBonus.Content = TestClass.VolumeBonusAmountStore(bonus.TicketAmount)