如何命名具有out参数的方法?

时间:2009-11-16 13:24:25

标签: naming-conventions parameters return out

命名一个在其中包含out参数的方法的常见首选项是什么?

通常我使用Get作为前缀来提及该方法返回一个值(如GetMyBusiness)。

但是如果在方法调用之后会有一个out参数怎么办? 方法名称是否应提及此并仅关注返回值?

谢谢!

5 个答案:

答案 0 :(得分:1)

方法名称应描述方法的功能(自记录代码)。如果方法签名将指示它使用out参数,则签名应足以警告开发人员将在变量中返回值。因此,我认为将它包含在方法名称中是多余的。即使是自我记录的代码也应该清晰简洁。如果您的语言不清楚,那么我会在名称中记录它,如果可以清楚简明地完成,或使用内联注释。

答案 1 :(得分:1)

命名法没有标准。但是,如果您的方法将作用于复合类型,请考虑采用使用Get ... And ...()的约定来表示有两件事情正在发生。例如:

int GetPopulationAndMeanAge(out double meanAge)
{
    // ...
    meanAge = CalculateMeanAge();
    return totalPopulation;
}

我认为更好的方法是返回复合类型。在垃圾收集语言中,没有理由 NOT 这样做,除非在调用这种方法的情况下,例如数百万次并且仪器显示GC没有正确处理加载。在非GC语言中,它确保在完成后确定谁负责清理内存方面存在一个小问题。

将前一个重构为复合类型(C#):

public class PopulationStatistics {
    int Population { get; set; }
    double MeanAge { get; set; }
}


PopulationStatistics GetPopulationStatistics()
{
    // ...
    return new PopulationStatistics { Population = totalPopulation, MeanAge = CalculateMeanAge };
}

答案 2 :(得分:0)

为什么不返回该参数呢?

无论如何,你可以使用“修改”或“处理”前缀。

答案 3 :(得分:0)

我会说在这种情况下,保持命名一致而不是命名方案实际上是更重要的。它使那些代码背后的人更容易,因为他们会根据他们的命名方式知道你的方法会有什么期望。

话虽如此,Get应该没问题。

答案 4 :(得分:0)

这取决于语言 例如,在C#中,不需要将它添加到函数的名称中,它已经在签名中:如果不再指定out,则无法调用函数,因此不存在遗漏副作用的风险:< / p>

Int32.TryParse("123", out number);