有没有更有效的方式来编写此代码?

时间:2018-08-19 00:56:34

标签: vb.net

我使用此计数器跟踪按钮已连续按下多少次。 如果按下另一个按钮,则计数器将重置为0。我已经很长时间没有编程了,并且可以确定这可以以更优化的方式编写。

If counterd = 0 Then
    money = money + 1400
    counterd = counterd + 1
ElseIf counterd = 1 Then
    money = money + 1900
    counterd = counterd + 1
ElseIf counterd = 2 Then
    money = money + 2400
    counterd = counterd + 1
ElseIf counterd = 3 Then
    money = money + 2900
    counterd = counterd + 1
ElseIf counterd > 4 Or counterd = 4 Then
    money = money + 3400
    counterd = counterd + 1
End If

If money > 16000 Or money = 16000 Then
    money = 16000
End If

1 个答案:

答案 0 :(得分:6)

您的逻辑几乎可以用以下三行代码表示:

money = money + 1400 + (Math.Min(counterd, 4) * 500)
counterd += 1

If money > 16000 Then money = 16000

或更短的版本:

money = Math.Min(16000, money + 1400 + (Math.Min(counterd, 4) * 500))
counterd += 1

虽然它不是可读性最好的版本,所以您可能希望将第一行分成两到三个步骤/行。

两个版本都使用Math.Min从两个值中选择最小值。例如,Math.Min(16000, anotherValue)总是返回anotherValue,只要它小于16000。一旦anotherValue大于16000Math.Min方法将返回16000

参考: