【问题标题】:When should i consider using named parameters against normal parameters?我什么时候应该考虑对普通参数使用命名参数?
【发布时间】:2010-03-07 03:08:08
【问题描述】:

我将 RenameFolder 拆分为两部分,我注意到 Visual Studios 2010 支持命名参数! (以下示例)。

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

我什么时候应该考虑使用命名参数而不是普通样式 (func(a,b,c)) 来编写函数。某些案例区域(没有何时和何时不建议)

  • 在同一个类中调用公共方法
  • 在同一个类中调用私有方法
  • 调用外部第 3 方库中的方法
  • 调用同一命名空间中另一个类中的方法
  • 在不同的命名空间或模块中调用另一个类中的方法
  • 从不属于库的内部类调用方法

    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)
    {
    

【问题讨论】:

    标签: language-agnostic named-parameters


    【解决方案1】:

    通常,当有大量默认值并且我只需要指定一些非默认值时,或者当函数名称不建议参数的顺序时,我会使用命名参数。在示例RenameFolder* 函数中,我希望文件夹位于新名称之前(RenameFolder 可以是短语“将文件夹 文件夹 重命名为 name”的缩写; 如果可能的话,将其措辞以便名称放在首位,这不是显而易见的方法),因此不会为命名参数而烦恼。

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

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

    【讨论】:

      猜你喜欢
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 2022-01-19
      • 2014-01-03
      • 1970-01-01
      相关资源
      最近更新 更多