【问题标题】:Conventions for order of parameters in a function函数中参数顺序的约定
【发布时间】:2010-05-09 04:07:55
【问题描述】:

在编写函数时,我的大脑总是花费几毫秒来检查哪个参数顺序最适合给定函数。

我应该写吗:

    public Comment AddComment(long userID, string title, string text)

或者可能:

    public Comment AddComment(string title, string text, long userID)

为什么不:

    public Comment AddComment(string title, long userID, string text)

在为函数排序参数时,您是否遵循任何规则? 您会先放置哪个参数,然后再放置哪个参数?

【问题讨论】:

  • 好问题,但你的措辞方式听起来像是一个开放式的讨论......你真的(或者你更愿意)问是否有一个既定的参数排序约定?如果是这样,哪种语言/环境?就像大小写一样,这种事情肯定会因语言而异。

标签: parameters function


【解决方案1】:

我通常只应用 3 条规则:

  • 如果一种语言允许将哈希/映射/关联数组作为单个参数传递,请尝试选择传递它。这对于参数 >=3 的方法特别有用,特别是当这些相同的参数将传递给嵌套函数调用时。

    这使得维护更容易 - 添加另一个参数(特别是当相同的参数列表在 10 级深度嵌套函数调用之间传递时)涉及更改代码中的 1 个位置(最终调用者)而不是每个单个函数获取该列表并将其传递到其他地方。

    这有一个小缺点,即在 C++ 等语言中没有类型检查(例如,您的编译器无法检查哈希/映射中是否包含正确类型的值以获取预期的键类型) - 如果这是一个问题,您可以将该参数映射封装为结构/类。

  • 1234563它应该在列表的后面。
  • 否则,将它们排列在最易读/可维护的任何逻辑分组中。

    这可能有点主观 - 例如下一个/上一个体重/身高可以同样有效地订购next_weight,next_height, prev_weight, prev_heightnext_weight, prev_weight, next_height, prev_height。同样,三个主要考虑因素是您的可读性/逻辑性,以及易于维护。

    就可读性而言,您可以按类型或含义对它们进行排序。

    就“逻辑性”而言,您可以按含义对它们进行排序(例如,将所有“下一个”组合在一起,或将所有高度组合在一起),或者按其他地方施加的某种顺序 - 例如,相应数据库表中的列顺序,或GUI 中的字段顺序(更糟,因为它可能会改变)。

    就维护而言,如果没有明确的有意义的顺序具体化,则字母数字顺序是最好的,因为它可以非常简单地通过扫描找到参数,尤其是决定在哪里插入新参数。

【讨论】:

    【解决方案2】:

    就我个人而言,我会做第一个,因为这正是我在 GUI 中的顺序:用户、标题、文本。

    但正如大卫所说,这是非常开放的。如果我的项目标准需要特殊订单,我会使用它。

    【讨论】:

      猜你喜欢
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 2014-03-11
      • 1970-01-01
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多