2009-05-29 19 views
6

La "cola", o FIFO, es una de las estructuras de datos más comunes y tiene implementaciones nativas en muchos idiomas y marcos. Sin embargo, parece haber poco consenso sobre cómo deben nombrarse las operaciones de cola fundamentales. Un estudio de varios lenguajes populares muestran:Terminología/convención de nomenclatura para operaciones de cola/API?

  • Python: PUT/GET
  • C#, Qt: poner en cola/retirada de cola
  • Ruby, C++ STD: push/pop
  • Java: añadir/quitar

Si se necesita implementar una cola (por ejemplo, en alguna plataforma integrada que ya no tenga una implementación de cola nativa), ¿qué convención de nomenclatura sería la mejor? Enqueue/dequeue parece ser el más explícito, pero es prolijo; put/get es sucinto pero no proporciona ninguna pista sobre la naturaleza FIFO de las operaciones; push/pop parece sugerir operaciones de pila en lugar de operaciones de cola.

Respuesta

4

Soy una especie de un pedante, por lo que me gustaría ir con enqueue/dequeue.

Aunque add/next tiene cierto atractivo.

Solo para aclarar el problema un poco más, en Perl es push/shift. :)

+0

¿Por qué no simplemente tener bish() bosh() también: S TAOCP quizás sea la referencia para la resolución de disputas? –

+1

Creo que la elección popular es 'enqueue (element: Element): void' y' dequeue(): Element'. Sin embargo, tiendo a escribir tantas clases DS/Algorithm como pueda utilizando cosas como 'add (element: Element)' y 'next(): Element' porque estos métodos también se comparten entre otros DS/Algorithms. ** De esta forma, un Implementador tiene menos necesidad de conocer las partes internas del DS y puede emplear el Principio de Sustitución de Liskov de SOLID más fácil **. De lo contrario, solo necesitas un adaptador, pero estoy a favor de cambiar la convención normativa para esto. – Cody

1

Probablemente lo nombre como push_back y pop_front.

+0

+1 O superior/inferior. Más cerca de la terminología de la memoria –

0

Agregar/Eliminar sonidos como el más lógico para usar, especialmente si tiene la intención de que lo lea una persona que no esté familiarizada con la estructura o el idioma (más fácil de entender).

Push/Pop sería el siguiente en mis clasificaciones debido a las preferencias personales.

Put/Get viene después.

Enqueue/Quitar de la cola es muy pasada porque realmente odio la letra Q.

+0

Simplemente no me gustaría escribir Enqueueueue todo el tiempo. –

2

push/pop es completamente incorrecto para un fifo ya que son operaciones de pila (primero en salir por última vez).

queue puede hacer referencia al objeto así como a una operación, por lo que está un poco sobrecargado y dequeue puede causar confusión porque se usaba comúnmente para referirse a una cola de final doble.

put/get - corto, obvio y genérico (no supone una implementación y se puede usar para todo tipo de colas/listas/colecciones) - ¿Qué no le gusta?

+1

+1 Estoy de acuerdo con este. push/pop casi siempre está asociado con una pila, no un fifo –

+0

"get" convencionalmente no modifica una colección, por lo que parece equivalente a "peek" para mí. – Grault

0

Añadir/eliminar tiene la ventaja de que puede cambiar fácilmente de una cola a otra estructura de datos.

Por ejemplo, el almacenamiento de estados en una cola frente a una pila hace la diferencia entre la búsqueda de ancho primero y primero de profundidad.

0

Me gusta enqueue y dequeue, pero escribirlos apesta. Así que en mis estructuras Queue (tanto C++ como Java), denominé las funciones enQ y deQ :)

0

Pop/push suena incorrecto, ya que sugiere una estructura de datos de pila en lugar de una cola.

Para agregar algo nuevo a las sugerencias: mis maestros siempre usaron in y out en la pizarra.

0

Me gusta contail and behead. No para todos, sin embargo. O "entra con lo nuevo", "sal con lo viejo". Y luego, para nosotros, habitantes del sudoeste, hay parranda y defang. Pero mi favorito es gráfico. Flecha derecha para entrar y luego flecha derecha para salir.

Cuestiones relacionadas