在方法中创建或更改对象时的约定

时间:2019-07-16 07:24:35

标签: c#

在设计用于创建或更改对象的API方法时,哪种干净的方法可以使API的用户无需三思而后了解其目的?示例:

class Test
{
    public IList<int> AddItem(int item, IList<int>? result = null)
    {
        if (result == null)
        {
            result = new List<int>();
        }
        result.Add(item);
        return result;
    }
}

var t = new Test();
var list = t.AddItem(1);
list = t.AddItem(2, list);
Console.WriteLine(list.Sum(l => l)); // == 3

我不确定是否遵循约定。另一方面,可选参数的名称“结果”具有误导性,如果它被称为“ existingList”或类似名称,则需要使用方法内部的另一个“返回”变量,否则可能会在内部产生误导性的“ existingList”名称使用。因此,我要求的东西很少,但我也对大型重构感兴趣。

假定始终为“结果”参数传递健康的对象不是一种选择(因为这种方法实际上应该创建“结果”参数更复杂)。

0 个答案:

没有答案