显示该方法修改 c# 中的参数的最佳方法是什么?
本文关键字:方法 参数 最佳 是什么 修改 显示 | 更新日期: 2023-09-27 17:59:09
我有一个方法,除了一些其他操作外,它还修改了其中一个参数。例如:
public void DoSomeStuffAndModifyList(List<int> list)
{
...
list.Add(newElement);
}
在我看来,该方法的名称不足以指向此。可能是整个方法都是错误的,或者可能有引用或使用?
使用方法/参数的描述性名称
public void FillItems(string foo,IList<Item> itemsToFeed)
除非实际需要,否则不要使用ref
。
如果您的方法
void DoSomething(List<int> list)
{
list.Add(whatever);
}
添加ref
没有用。您没有做任何需要它的事情,只会增加额外的复杂性而没有任何好处,并且可能使维护程序员更难推理该方法。
当您的方法实际上可以通过将其指向原始列表以外的内容来更改list
时,请使用ref
。这可以是全新的列表、另一个现有列表或 null。并且仅当您希望此更改在调用方可见时才使用 ref
。
对于您的方法,请探索重构它,以便可能不需要在列表中添加或删除项。完成此操作后,请绝对适当地命名该方法。完成此操作后,利用方法和参数摘要注释来传达您认为有用的信息。
/// <summary>
/// Describe the method andhere
/// </summary>
/// <param name="list">Describe what's relevant about the parameter here.</param>
不要滥用ref
关键字,进行适当的重构,使用文档。
使用ObservableCollection<T>
并在事件更改时触发CollectionChanged
事件http://msdn.microsoft.com/en-us/library/ms668604.aspx
或者你可以像那样将你的方法作为解释方法
public static List<int> DoSomeStuffAndModifyList(this List<int> list)
{
...
list.Add(newElement);
return list;
}
如何返回一个新列表:
public List<int> DoSomeStuff(List<int> list)
{
...
return list.Concat(new[] { newElement });
}
我对你的问题有点困惑。 您是在问如何命名您的方法吗?
你应该把你的行动分解成不同的方法。 我不会太担心调用这些操作的方法。 只要它有足够的描述性,那应该没问题。
正如约翰·桑德斯(John Saunders(所说,将你的方法分开,单一责任。
public List<int> GetList()
{
//return list
}
public void ModifyList(List<int> list)
{
//Modify list, you could return if you wanted to.
}
//Call 2 methods
List<int> list = GetList();
ModifyList(list);
创建一个扩展方法。
public static class ListExtensions
{
public static void DoSomeStuffAndModifyList(this List<int> list)
{
...
list.Add(newElement);
}
)
并称之为:
var gradeList = new List<int>();
gradeList.DoSomeStuffAndModifyList();