队列操作/ API的术语/命名约定?

时间:2009-05-29 17:16:32

标签: data-structures naming-conventions queue terminology

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

  • Python:put / get
  • C#,Qt:enqueue / dequeue
  • Ruby,C ++ STD:push / pop
  • Java:添加/删除

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

8 个答案:

答案 0 :(得分:4)

我是一个迂腐的人,所以我会选择enqueue/dequeue

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

只是为了让问题多一点,在Perl中push/shift。 :)

答案 1 :(得分:2)

push / pop对于fifo来说是完全错误的,因为它们是堆栈(在最后一次出局中)操作。

队列可以引用对象以及操作,因此有点过载而且出队可能会引起混淆,因为它通常用于引用双端队列。

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

答案 2 :(得分:1)

我可能会将其命名为push_backpop_front

答案 3 :(得分:0)

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

由于个人喜好,推/弹将成为我排名的下一个。

接下来是Put / Get。

入队/出队是最后一次,因为我真的很讨厌这封信。

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

我喜欢入队和出队,但输入它们很糟糕。所以在我的队列结构(包括C ++和Java)中,我将函数命名为enQ和deQ:)

答案 6 :(得分:0)

弹出/推送声音错误,因为它表示堆栈数据结构而不是队列。

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

答案 7 :(得分:0)

我喜欢恳求和斩首。但并不适合所有人。或者"使用新的","输出旧的"。然后对于我们来说,西方人有勇气和蔑视。但我最喜欢的是图形。右箭头为in,然后右箭头为out。