2009-11-16 12 views
20

He creado algunos de mis propios paquetes de usuarios y se han topado con un nombre choque.¿Existe una convención de nomenclatura de paquetes de lisp común?

En Java, la convención de nombres es usar su nombre de dominio en el nombre del paquete: por ejemplo, import com.example.somepackage ;.

¿Hay convenciones de nomenclatura de paquete ampliamente utilizado para paquetes de Common Lisp?

Saludos,

Russell

Respuesta

20

La convención que utilizo es el uso de una palabra única: salza, Skippy, ZS3, etc. Realmente no tratar de tener una relación directa con la funcionalidad de la biblioteca. Intento evitar las palabras genéricas que otros pueden usar como "zlib" o "zip" o "png".

Edi Weitz utiliza palabras relacionadas con Zappa Frank nombrar muchos de sus paquetes: Hunchentoot, Drakma, etc.

Algunas personas utilizan Java-estilo org.foo.bar invierte de nombres de dominio.

Por lo tanto, la respuesta directa es que no, no hay un común, acordada convención de que todo el mundo utiliza.

+1

Gracias por la respuesta. Esto confirma mis observaciones de los pocos paquetes que he usado, excepto por el uso de palabras relacionadas con Frank Zappa :). – Russell

+0

No olvides las versiones de Drew Crampsie como lisp-on-lines. – felideon

+3

Personalmente no me gustan los puntos con nombres Lisp. –

7

Una convención que ve a veces son los paquetes que proporcionan una envoltura de compatibilidad delgada sobre la funcionalidad implementada rutinariamente pero no estandarizada a menudo se llama TRIVIAL-SOMETHING.

Esto lleva a algunos nombres realmente maravillosos: la biblioteca para trabajar con *FEATURES* de una manera independiente de la implementación se llama TRIVIAL-FEATURES; aún mejor, la biblioteca para interactuar con el recolector de basura de una manera estandarizada se llama TRIVIAL-GARBAGE.

4

No hay convención general, pero hay algunas pautas:

  1. Cuando la biblioteca es un puerto de algún otro idioma, una envoltura o una biblioteca de interfaz a menudo tiene el prefijo cl-, como cl-gtk2 o cl-ppcre . Aunque hubo un tiempo, cuando este prefijo consiguió abusado, y hay un montón de paquetes (por ejemplo cl-who), que implementan una funcionalidad única, pero aún lo utilizan.
  2. Si el paquete es específico de la implementación, tiene el prefijo de taquigrafía de implementación (más notablemente: sb-), como sb-queue o lw-compat.
  3. Si el paquete es una capa de compatibilidad entre las implementaciones, a menudo es el prefijo trivial-, como trivial-backtrace o trivial-garbage
  4. También hay s- prefijo, que pueden presentarse a las 'simbólica', como s-xml, pero es raramente utilizado.

Estos prefijos ayudan a que el nombre del paquete sea único y, por lo tanto, simplifican la búsqueda de información sobre él en la web.

De lo contrario no hay convenciones específicas, pero la regla general es favorecer probablemente, nombres descriptivos cortos, únicos y,. Por las razones de facilidad para recordar, usar y encontrar información.

Si el paquete tiene un nombre largo, es útil proporcionar un alias más corto, ya que con más frecuencia, las personas utilizarán los símbolos del paquete calificados por sus nombres. Por ejemplo, en mi código agrego un apodo re a cl-ppcre, y hace que el código del cliente sea mucho más comprensible y claro. Aunque se debe aplicar precaución, para que los apodos no causen conflictos de nombres.

Cuestiones relacionadas