Лучший способ расширить поведение в классе Pharo Smalltalk?
Вопрос
Я хочу расширить класс строки с помощью метода для создания URL -слизняка из строки. Я нашел здесь ссылку, которая показывает, как вы можете перемещать расширения в свой собственный пакет:
SmallTalk Daily 13.07.10: расширение поведения II.
Тем не менее, я не могу найти какую -либо опцию «Переместить на упаковку» в Pharo Smalltalk. Можно ли просто расширить класс основного класса с помощью нового метода, или есть лучший способ?
Решение
В Pharo или Siveak поставить методы расширения для Mypackage в категории методов называется *mypackage
(или если вы хотите быть более описательным *mypackage-slug
).
Методы в этих категориях автоматически относятся к Mypackage Пакет (по крайней мере с точки зрения Монтичелло)
Другие советы
«Можно ли просто расширить основной класс с помощью нового метода, или есть лучший способ?»
В этом решении есть компромиссы. Фактически, у Фаро была строка >> asurl до недавнего времени, когда он был удален как часть очистки системы. Анкет С одной стороны, некоторые считаются плохим стилем (см. Лучшие практики Кента Бека), чтобы иметь методы преобразования между объектами, которые не имеют сходных протоколов (семантически похожи). Кроме того, это приводит к раздутым классам основных основных классов (например, строка и объекта). Тем не менее, в вашем собственном приложении может быть веская причина, которая уравновешивает эти факторы, и, поскольку вы упаковываете его с вашим приложением, а не с системой, раскачиваются.