私はこの機能を共有するのに恥ずかしいですが、私はそれを解き放つのに役立つ必要があります。私はこれをずっと前から非常に単純な使い方で書いていましたが、それは制御不能になってしまい、正しく処理する方法がわかりません。多くのオプションパラメータの処理
Public Shared Function SetVariables(msg As String, Optional name As String = "", Optional target As String = "", Optional amount As Decimal = 0, Optional cost As String = "0", Optional keyword As String = "", Optional time As String = "", Optional reward As String = "", Optional participantList As String = "", Optional participantCount As Integer = 0, Optional game As String = "", Optional viewers As String = "", Optional followers As String = "", Optional link As String = "", Optional _options As String = "", Optional Year As String = "", Optional Month As String = "", Optional Day As String = "", Optional Hour As String = "", Optional Minute As String = "", Optional grpname As String = "")
Dim balance As Decimal
Dim holdings As Decimal
If name > "" Then
If Options.Accounts.ContainsKey(name) Then
If Options.Holdings.ContainsKey(Options.Accounts.Item(name)) Then
holdings = Options.Holdings.Item(Options.Accounts.Item(name))
End If
balance = Options.Accounts.Item(name).Points
End If
End If
msg = msg.Replace("[name]", StrConv(name, VbStrConv.ProperCase))
If holdings > 0 Then
msg = msg.Replace("[balance]", balance & "[" & holdings & "]")
Else
msg = msg.Replace("[balance]", balance)
End If
msg = msg.Replace("[channel]", Subs.UppercaseFirstLetter(Options.Channel.TrimStart("#")))
msg = msg.Replace("[target]", Subs.UppercaseFirstLetter(target))
msg = msg.Replace("[amount]", amount)
msg = msg.Replace("[cost]", cost)
msg = msg.Replace("[keyword]", keyword)
msg = msg.Replace("[time]", time)
msg = msg.Replace("[reward]", reward)
msg = msg.Replace("[participantList]", participantList)
msg = msg.Replace("[participantCount]", participantCount)
msg = msg.Replace("[botname]", Subs.UppercaseFirstLetter(Options.User))
If msg.Contains("[groups]") Then msg = msg.Replace("[groups]", GetSortedGroups(name))
If msg.Contains("[group]") Then msg = msg.Replace("[group]", GetSortedGroups(name, True))
msg = msg.Replace("[game]", StrConv(game, VbStrConv.ProperCase))
msg = msg.Replace("[viewers]", viewers)
msg = msg.Replace("[followers]", followers)
msg = msg.Replace("[link]", link)
msg = msg.Replace("[options]", options.ToUpper)
msg = msg.Replace("[years]", Year)
msg = msg.Replace("[months]", Month)
msg = msg.Replace("[days]", Day)
msg = msg.Replace("[hours]", Hour)
msg = msg.Replace("[minutes]", Minute)
msg = msg.Replace("[grpname]", StrConv(grpname, VbStrConv.ProperCase))
If balance = 1 Or amount = 1 Then
msg = msg.Replace("[currency]", Options.PName)
Else
msg = msg.Replace("[currency]", Options.PNames)
End If
Return msg
End Function
基本的には、この関数に文字列を渡します。[name] [keyword]などは、他のものに置き換えられます。ときには、データを渡す必要がある場合もあります。問題が始まる場所です。私はこれらを同じ機能で使いたかったのですが、私は今、多くのパラメータへの道があります。私は関数の1回の呼び出しでこれらのパラメータをすべて使用することはありません。時間が経つにつれて1トン増やすつもりです。
このような処理を改善するためのアドバイスはありますか?私はこの機能を分断して、個々の基準で置き換えを処理するべきですか?
これらのパラメータで構成されるクラスは、より簡潔にする必要があります – Plutonix
あなたは正しいかもしれません。私は実際にこれをやり直すことを考え、そのアイデアを忘れてしまった。ありがとう! – Josh
@Plutonix私のOPで共有したことを使って、このクラスをどのように構造化するかの大まかな例を書くことができますか?私はこのクラスを使うときに本当に長い文字列を持つように感じていますが、多分私は間違っていると思っています。 – Josh