我的(C#3.0 .NET 3.5)应用程序的一部分需要维护几个字符串列表.我毫不奇怪地将它们声明为List< string>一切正常,这很好.
这些列表中的字符串实际上(并且始终)是基金ID.我想知道更明确的是否更有意图揭示,例如:
public class FundIdList : List<string> { }
……这也有效.从技术上还是哲学上来说,这有什么明显的缺点吗?
解决方法
我将从另一个方向开始:将字符串包装到名为FundId的类/结构中.我认为,这样做的优势大于通用列表与专用列表.
>您的代码变得类型安全:将表示其他内容的字符串传递给需要基金标识符的方法的范围要小得多.
>您可以将构造函数中有效的字符串约束为FundId,即强制执行最大长度,检查代码是否为预期格式,& c.
>您可以添加与该类型相关的方法/功能.例如,如果以“I”开头的基金代码是内部基金,您可以添加一个名为IsInternal的属性来形式化.
至于FundIdList,拥有这样一个类的优势类似于上面的FundId第3点:你有一个地方可以挂钩在FundIds列表上运行的方法/函数(即聚合函数).如果没有这样的地方,你会发现静态帮助器方法开始在整个代码中出现,或者在一些静态助手类中出现.