【问题标题】:Terminology/naming convention for queue operations/APIs?队列操作/API 的术语/命名约定?
【发布时间】:2010-10-29 22:53:47
【问题描述】:

“队列”或 FIFO 是最常见的数据结构之一,在许多语言和框架中都有本机实现。然而,对于如何命名基本队列操作似乎几乎没有共识。对几种流行语言的调查显示:

  • Python:放置/获取
  • C#、Qt:入队/出队
  • Ruby、C++ 标准:推送/弹出
  • Java:添加/删除

如果需要实现一个队列(例如,在一些还没有本地队列实现的嵌入式平台中),哪种命名约定最好? 入队/出队似乎是最明确的,但冗长; put/get 很简洁,但没有提供任何关于操作的 FIFO 特性的提示; push/pop 似乎是建议堆栈操作而不是队列操作。

【问题讨论】:

    标签: data-structures naming-conventions queue terminology


    【解决方案1】:

    我可能会将其命名为push_backpop_front

    【讨论】:

      【解决方案2】:

      添加/删除听起来是最合乎逻辑的方法,特别是如果您打算让不熟悉结构或语言的人阅读它(更容易理解)。

      由于个人喜好,Push/Pop 将在我的排名中排在第二位。

      接下来是Put/Get。

      Enqueue/Dequeue 是最后一个,因为我真的很讨厌字母 Q。

      【讨论】:

      • 我只是不想一直输入 Enqueueueue。
      【解决方案3】:

      我有点学究气,所以我会选择enqueue/dequeue

      虽然add/next有一定的吸引力。

      只是为了让这个问题更加模糊,在 Perl 中它是push/shift。 :)

      【讨论】:

      • 为什么不也有 bish() bosh() :S TAOCP 可能是争议解决的参考?
      • 我相信流行的选择是enqueue(element: Element) : voiddequeue() : Element。但是,我倾向于使用add(element: Element)next() : Element 之类的东西尽可能多地编写DS/算法类,因为这些方法也与其他DS/算法共享。 这样,实施者对 DS 内部的了解就更少了,您可以更轻松地使用 SOLID 中的 Liskov 替换原则。否则,您只需要一个适配器,但我完全赞成为此更改规范约定。
      【解决方案4】:

      push/pop 对于 fifo 来说是完全错误的,因为这些是堆栈(先进后出)操作。

      queue 既可以引用对象也可以引用操作,因此有点重载,并且 dequeue 可能会引起混淆,因为它通常用于引用双端队列。

      put/get - 简短、明显和通用(不假设实现,可用于各种队列/列表/集合) - 有什么不喜欢的?

      【讨论】:

      • +1 我同意这个。 push/pop 几乎总是与堆栈相关联,而不是 fifo
      • "get" 通常不会修改集合,所以在我看来它相当于“peek”。
      【解决方案5】:

      添加/删除的优点是您可以轻松地从队列更改为另一个数据结构。

      例如,将状态存储在队列与堆栈中会产生广度优先搜索和深度优先搜索之间的差异。

      【讨论】:

        【解决方案6】:

        我喜欢 enqueue 和 dequeue,但输入它们很糟糕。因此,在我的队列结构(C++ 和 Java)中,我将函数命名为 enQ 和 deQ :)

        【讨论】:

          【解决方案7】:

          Pop/push 听起来是错误的,因为它暗示了堆栈数据结构而不是队列。

          为建议添加一些新内容:我的老师总是在黑板上使用inout

          【讨论】:

            【解决方案8】:

            我喜欢继承和斩首。虽然不适合所有人。或“以新入”、“以旧出”。然后对我们西南人来说,有 berattle 和 defang。但我最喜欢的是图形。右箭头输入,然后右箭头输出。

            【讨论】:

              猜你喜欢
              • 2015-12-15
              • 2010-10-31
              • 2019-12-17
              • 2010-12-10
              • 1970-01-01
              • 1970-01-01
              • 2015-01-31
              • 1970-01-01
              • 2021-10-26
              相关资源
              最近更新 更多