2011-02-02 15 views
6

Quiero extender la clase String con un método para crear un slug url fuera de una cadena. Encontré un enlace aquí que muestra cómo puede mover extensiones a su propio paquete:¿La mejor manera de extender el comportamiento de la clase Pharo Smalltalk?

Smalltalk Daily 07/13/10: Extending Behavior II.

Sin embargo, no puedo encontrar ninguna opción de "mover al paquete" en Pharo Smalltalk. ¿Está bien simplemente extender la clase principal con el nuevo método, o hay una forma mejor?

Respuesta

8

En Pharo o Squeak poner los métodos de extensión para MyPackage en una categoría método llamado *mypackage (o si quieres ser más descriptivo *mypackage-slug).

Los métodos en estas categorías pertenecen automáticamente al paquete MyPackage (al menos desde el punto de Monticello de vista)

8

"¿Está bien simplemente extender la clase base con el nuevo método, o hay una ¿mejor manera?"

Esta decisión tiene consecuencias. De hecho, Pharo tenía String >> asUrl hasta muy recientemente, cuando it was removed as part of cleaning the system. Por un lado, algunos lo consideran un mal estilo (ver las Mejores Prácticas de Kent Beck) para tener métodos de conversión entre objetos que no tienen protocolos similares (son semánticamente similares). Además, esto conduce a clases centrales hinchadas (como String y Object). Sin embargo, en su propia aplicación, puede haber una buena razón que equilibre estos factores, y ya que lo está empaquetando con su aplicación, y no con el sistema, agite.

Cuestiones relacionadas