2011-02-01 6 views
0

これは私のプロジェクトで持っているクラスの簡略化されたバージョンです。ボーナスは各機能で全く同じ方法であると考えられるので、私はここに現れる明白なコードの複製を削除し、3つの異なる機能を1つにしたいと考えています。しかし、私は、この新しい関数が必要とする議論をどのように提供するかについてはわかりません。例えば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 

編集:それが違いを生むないかもしれませんが、私は式の他の要因があることが明らかになっている必要があります(私はちょうどそれをシンプルに保つためにしようとしていました)。ボーナスのような他のコールバックがある場合、答えは同じです。最大額、ボーナス、最小額?ボーナスオブジェクトには5回のコールバックがあり、店舗、地区または会社のいずれであるかによって金額が異なります。

+0

私は、スタックオーバーフローインタフェースによって少し混乱しています。更新された情報は、元の投稿のコメントとして、元の投稿へのコメントとして、または返信のコメントとして入力する必要がありますか? –

+0

編集、(15桁) – Fredou

+0

ありがとうございます。私はちょうど編集として元の投稿に自分のコメントを移動しました。 –

答えて

1

方法について:

ボーナスは bonus.TicketAmountある
Public Shared Function GetBonus(ByVal bonus as Double) As Double 
    Return bonus * 5 
End Function 

。または、それらがすべて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 
+0

+1、ベースクラスの場合、または彼がインタフェースを持っている場合 – Fredou

2

なぜないシンプル

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



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

+1 - 私はあなたの変数名がより好きです。 –

+0

@ Joel Etherton、ありがとう、同じ考えがあった:-) – Fredou

関連する問題