代码之家  ›  专栏  ›  技术社区  ›  Mike Becatti

对方法中的参数排序有什么约定?

  •  6
  • Mike Becatti  · 技术社区  · 17 年前

    我和一位同事正在讨论有关订购方法参数的最佳实践。目标是在我们的组织中建立一个标准,通过给我们的方法提供通用签名来提高可读性和生产力。我们只不过是为最近招聘的毕业生制定指导方针。

    示例(用户ID总是被传入以审核调用):

    getorders(字符串userid,int customerid); getorders(字符串userid,int[]orderids); getcustomer(字符串userid,int customerid);

    我的论点如下:

    1. 常用的参数最多。
    2. 其余参数基于重要性
    3. 最后是可选(可以为空)参数。

    他的论点本质上是相反的。

    我不是在问对错,也不是在讨论。我只想看看现有的标准是什么。

    谢谢!

    5 回复  |  直到 17 年前
        1
  •  6
  •   workmad3    17 年前

    我将按照输入、输出和可选的顺序进行排序。

    可选参数应该放在最后,因为大多数语言都允许您为可选参数指定默认值,以避免包含这些参数。规定他们必须是最后一个论点,否则你不能放弃他们。

    这是假设你不能有命名的参数。如果你能拥有它们,我总是建议你用它们来表达清楚,而秩序就成了一个没有意义的问题。

        2
  •  4
  •   BlackWasp    17 年前

    我试图让所有使用相似参数的方法以相同的顺序使用它们。

    对于单一方法的选择,我是按重要性来考虑的。最后是可选项目。

        3
  •  3
  •   DOK    17 年前

    我喜欢按字母顺序,按名字排列。使你更容易找到你要找的那个。

    我同意带有默认值的可选值在末尾似乎是属于它们的。在某些语言中,这是必需的。

    当您重载方法时,我将从最常用的参数开始,并以使此版本方法唯一的参数结束。

    public method foo (string name)
    public method foo (string name, string city)
    public method foo (string name, string city, string state)
    
        4
  •  1
  •   James Curran    17 年前

    C程序设计中流行的一个习惯用法是,目标优先,这样在strcpy(a,b)中,目标将b复制到a(很像“a=b”;将b复制到a)。

        5
  •  1
  •   iny    17 年前

    在其他情况下,事情也会出现。

    最容易在结尾添加参数。