当你创建一个参数包含2个对象但只更改1的方法时,什么是好的做法
本文关键字:方法 什么 创建 一个 参数 对象 2个 包含 当你 | 更新日期: 2023-09-27 18:07:44
例如:
void FilterA(Hashset<T> blackList, List<T> myList)
{
blackList.UnionWith(myList);
}
我不知道是否会有一些好的编码风格将blackList
和myList
分开。或者这是必要的吗?
就良好实践而言——在您的特定情况下,我将不考虑此方法。实现一个只封装单个框架方法(HashSet<T>.UnionWith
(的方法实际上只会模糊代码。
然而,总的来说,我认为文档和命名是关键。如果你的方法名称更清楚,那就显而易见了。考虑一下这个方法——FilterA
实际上建议您"过滤"集合,而不是根据第二个集合向其中添加项目。
此外,使用适当的接口,如IEnumerable<T>
,而不是传递具体的类(List<T>
(,可以帮助区分事物。如果传递IEnumerable<T>
,尤其如此,因为这是一个不公开任何编辑操作的接口。
您可以这样做:void FilterA(hashset<t> blacklist,IEnumerable<t> mylist>
。很明显,IEnumerables是不能修改的。
但我认为这里最重要的是函数和变量的名称。从它们的名称中应该可以清楚地看到函数的作用。
如果没有List<T>
特定的成员,可以使用不可变的接口。CCD_ 10是一个很好的候选者。
您可以使用IEnumerable作为第二个参数。
void FilterA<T>(HashSet<T> blacklist, List<T> mylist)
{
blacklist.UnionWith(mylist);
}
没有与C/C++常量参数修饰符直接等效的方法。
您不想更改mylist吗?我建议使用这个:
void FilterA<T>(HashSet<T> blacklist, IEnumerable<T> mylist)
{
blacklist.UnionWith(mylist);
}