language-agnostic - 递归函数 - 两个函数或最后一个可选参数

标签 language-agnostic recursion naming-conventions

在编写递归函数时,有时会发生某些事情只应在递归算法的第一次通过时发生。如果这是真的,我有两个选择,

  • 有一个名为“first run”的可选参数,默认情况下设置为 true,但在递归调用时,该参数为 false
  • 有两个功能

  • 哪个选项更可取?如果是后者,我应该如何命名这些函数? (例如,如果是洪水填充算法,我会选择 FloodFillFloodFillRecursive 吗?)

    提前致谢,嗯。

    最佳答案

    我可能会使用两个函数,我会说将要调用的函数应该命名为 FloodFill : 用户不需要知道该函数是如何实现的,因此不应将其命名为 FloodFillRecursive .

    其实,FloodFillRecursive可能是内部函数的名称:包含实现的函数,由用户调用的函数调用的函数——因为它是递归的第二个函数。
    理想情况下,该函数不应该对用户可见:它应该隐藏在您的库中(无论是真正隐藏,还是使用一些命名约定告诉用户他们不应该直接调用它)。

    而且,这样,如果您更改实现,您将不会让您的用户调用 FloodFillRecursive可能不再递归的函数。

    关于language-agnostic - 递归函数 - 两个函数或最后一个可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9243646/

    相关文章:

    security - 将所有来源暴露给第三方的风险有多大?

    unit-testing - 如何知道您的单元测试装置是否为 “right-sized” ?

    javascript - 在javascript中从json数组构建树,没有父键但有前缀

    c++ - 哪个参数应该首先是 `old` 或 `new` ?

    language-agnostic - 没有前端的CMS?

    language-agnostic - "Best viewed at 1024 X 768"是什么意思?

    Haskell 递归类型

    java - 使用 DFS 计算 Java 中 5x5 场上可能的骑士移动

    android - 包名以数字开头的规则是什么?

    Java 数据传输对象命名约定?