【问题标题】:What conventions exist for ordering arguments in methods?在方法中对参数进行排序有哪些约定?
【发布时间】:2008-10-16 14:40:15
【问题描述】:

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

示例(始终传入 userId 以审核调用):

GetOrders(string userId, int customerId); GetOrders(string userId, int[] orderIds); GetCustomer(string userId, int customerId);

我的论点如下:

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

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

我在这里不是要求正确或错误的答案,也不是讨论。我只是想看看已经存在哪些标准。

谢谢!

【问题讨论】:

    标签: oop coding-style


    【解决方案1】:

    我会选择输入、输出、可选的顺序。

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

    这是假设你不能有命名参数。如果您可以拥有它们,我总是建议您使用它们以清晰明了,并且顺序成为一个有争议的问题。

    【讨论】:

      【解决方案2】:

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

      对于单一方法的选择,我按重要性进行。可选项目最后。

      【讨论】:

        【解决方案3】:

        我喜欢按名称按字母顺序排列它们。让您更容易找到您要找的人。

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

        当你有重载方法时,我会从最常用的参数开始,最后是使这个版本的方法独一无二的参数。

        public method foo (string name)
        public method foo (string name, string city)
        public method foo (string name, string city, string state)
        

        【讨论】:

        • +1 推荐重载方法。但不同意字母顺序。
        • 是的,我对按字母顺序排列的感觉并不强烈。你的偏好是什么?
        【解决方案4】:

        在 C 编程中流行的一个成语是目标在前,所以在 strcpy(A, B);将 B 复制到 A(很像 "A=B;" 将 B 复制到 A)。

        【讨论】:

        • bcopy 使用相反:void bcopy(const void *s1, void *s2, size_t n);
        【解决方案5】:

        让事物也出现在其他上下文中。

        在末尾添加参数是最简单的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-11-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多