Verwenden eines ParamArrays, das jedoch mindestens einen Parameter erfordert

Was ich früher hatte:

Public Sub Subscribe(channel As ChannelType)
Public Sub Subscribe(channels As IEnumerable(Of ChannelType))

Der erste ruft einfach den zweiten mit an{channel} um seinen Parameter in ein Array umzuwandeln.

Ich entschied, dass das Erstellen einer Liste von Kanälen zur Übergabe an die Methode umständlich war, und entschied mich, die beiden Überladungen zu einer Methode zu kombinieren, die a benötigtParamArray.

Public Sub Subscribe(ParamArray channels() As ChannelType)

'Usage
Subscribe(ChannelType.News)
Subscribe(ChannelType.News, ChannelType.Sports)
Subscribe() 'Oops... this is valid

Was ist hier die "Best Practice"? Ich mag die Flexibilität, dieParamArray Ich lasse nur Leute Sachen rein, aber es hilft dem Entwickler nicht "schneller" durch Compiler-Fehler-Feedback ... das bedeutet, dass so etwas wie eineArgumentException Dies kommt hier nicht in Frage, da Benutzer, die diese Methode verwenden, möglicherweise keine Komponententests schreiben. Eine Option ist die folgende ...

Public Sub Subscribe(channel As ChannelType)
Public Sub Subscribe(channel As ChannelType, ParamArray channels() As ChannelType)

Aber ich habe das Gefühl, dass das mich fast wieder auf den ersten Platz bringt, verwirrend ist und erfordert, dass meine Implementierung dieser Methode weniger einfach ist.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage