我应该何时考虑对正常参数使用命名参数?

时间:2010-03-07 03:08:08

标签: language-agnostic named-parameters

我将RenameFolder分成两部分,我注意到visual studios 2010支持命名参数! (例如下面)。

我知道这已经存在了很多年的其他语言。我记得一位教授说他为什么喜欢命名参数,并且他在他的所有代码中使用它们。但我确信它不是在他的所有代码中。我在想。

我应该何时考虑使用命名参数vs普通样式(func(a,b,c))来编写函数。有些情况区域(没有时间和何时不建议)

  • 在同一个班级中调用公共方法
  • 在同一个班级中调用私有方法
  • 在外部第三方库中调用方法
  • 在同一名称空间中的另一个类中调用方法
  • 在不同名称空间或模块中的另一个类中调用方法
  • 从内部类调用方法并不是一个库

    public bool RenameFolderIn(PK folderId, string newfoldername)
    {
        return RenameFolder(newfoldername: newfoldername, infolder: true, folderId: folderId);
    }
     public bool RenameFolderOut(PK folderId, string newfoldername)
    {
        return RenameFolder(newfoldername: newfoldername, infolder: false, folderId: folderId);
    }
    public bool RenameFolder(PK folderId, string newfoldername, bool infolder)
    {
    

1 个答案:

答案 0 :(得分:2)

通常,当存在大量默认值时我使用命名参数,我只需指定一些非默认值,或者当函数名称不建议参数顺序时。在示例RenameFolder*函数中,我希望文件夹在新名称之前(RenameFolder可以是短语“rename folder folder to name < / em>“;如果可能的话,首先使用名称,这不是明显的方法,因此不会打扰命名参数。

示例:假设Gamma是Gamma分布的构造函数,它有两个参数: shape scale 。在 scale 之前传递 shape 有一个统计约定,但是名称中的约定并不明显,所以我们使用命名参数。

waitTime = Gamma(shape: 2, scale: 2)