将许多相似的参数封装到一个结构中是否是一个好习惯

jpo*_*poh 4 c# parameters struct

基本上,我有类似以下内容:

public string SomeDBMethod(string server, string dbName, string userName, string password,...)
Run Code Online (Sandbox Code Playgroud)

将其重构为以下内容是否是一种好的做法:

public string SomeDbMethod(DBParams parameters, ...)
Run Code Online (Sandbox Code Playgroud)

其中 DBParams 定义如下:

public struct DBParams
{
  string Server {get;set;}
  string DbName {get;set;}
  string UserName {get;set;}
  string Password {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我的观点是真正能够传递更少的参数,因为我发现具有长参数列表的函数确实非常难看。

我还发现这种方法有一些限制:如果 SomeDbMethod 要作为 Web 服务方法公开,我不能使用 DBParams 结构作为参数(据我对 Web 服务主题的理解...不是很远)。

那么,这是否太麻烦而没有什么好处,还是我在这里做了一些事情?

Nol*_*rin 5

除非您实际上需要非常频繁地传递这组参数(使用相同的数据),否则我认为没有任何必要。长参数列表有时表明需要重构代码,但有时也是不可避免的。(在您的情况下,似乎更像是后者。)因此,只需使用直接传递参数的简单方法,除非您发现自己需要存储参数集(至少暂时) - 您实际上不会保存任何代码否则,肯定不会增加可读性。

使用结构的方法不会对 Web 服务施加任何限制。您只需将类型设置为可序列化(DataContract我相信在 WPF 中),就不应该有任何问题。