Bu işlevi paylaşmaktan utanıyorum, ancak bunu temizlemem için yardıma ihtiyacım var. Bunu çok uzun bir süre önce çok basit bir kullanım için yazdım, ama kontrolden çıktı ve nasıl düzgün bir şekilde kullanılacağından emin değilim. başka bir şeyle değiştirilmesi [ad] [anahtar kelime], vb: İsteğe Bağlı Bir Çok Parametreyi Kullanmak
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
Temelde ben bunlardan birkaç tane içerir, bu işleve bir dize geçer. Bazen verileri de bununla değiştirmek zorundayım, problemin başladığı yer burası. Bunların aynı işlevde olmasını istedim, ama şimdi birçok parametreye varım var. Bu parametrelerin hiçbirini fonksiyonun tek bir çağrısında kullanmam ve zaman geçtikçe daha fazla ton ekleyeceğim.
daha böyle bir şey nasıl ele alınacağı üzerinde herhangi bir tavsiye? Sadece bu işlevi parçalara ayırmalı ve değiştirmeleri tek tek ele almalı mıyım?
Bu paramiklerden oluşan bir sınıf daha özlü hale getirmelidir – Plutonix
Hak olabilirsiniz. Aslında bunu bir süre önce yapmayı düşündüm ve bu fikri unutmuşum. Teşekkürler! – Josh
@Plutonix OP'mde paylaştığım şeyi kullanarak, bu sınıfı nasıl yapılandıracağınıza dair kaba bir örnek yazabiliyor musunuz? Bu dersi kullanırken gerçekten çok uzun bir dizime sahip olacağımı düşünüyorum, fakat belki de yanlış bakıyorum. – Josh