文字列から URL スラッグを作成するメソッドを使用して String クラスを拡張したいと考えています。拡張機能を独自のパッケージに移動する方法を示すリンクを見つけました:
Smalltalk Daily 2010 年 7 月 13 日: 振る舞いの拡張 II .
しかし、Pharo Smalltalk には「パッケージに移動」オプションがありません。コア クラスを new メソッドで拡張するだけでよいのでしょうか、それとももっと良い方法がありますか?
文字列から URL スラッグを作成するメソッドを使用して String クラスを拡張したいと考えています。拡張機能を独自のパッケージに移動する方法を示すリンクを見つけました:
Smalltalk Daily 2010 年 7 月 13 日: 振る舞いの拡張 II .
しかし、Pharo Smalltalk には「パッケージに移動」オプションがありません。コア クラスを new メソッドで拡張するだけでよいのでしょうか、それとももっと良い方法がありますか?
「新しいメソッドでコアクラスを拡張するだけでいいですか、それとももっと良い方法はありますか?」
この決定にはトレードオフがあります。実際、システムのクリーニングの一環として削除されたごく最近まで、Pharo には String>>asUrlがありました。一方では、プロトコルが類似していない (意味的に類似している) オブジェクト間で変換メソッドを使用することは、悪いスタイルであると考えられています (Kent Beck の Best Practices を参照)。さらに、これは肥大化したコア クラス (String や Object など) につながります。ただし、独自のアプリケーションでは、これらの要因のバランスをとる正当な理由がある場合があり、システムではなくアプリと一緒にパッケージ化しているため、うまくいきません。
Pharo または Squeak では、MyPackageの拡張メソッドをと呼ばれるメソッド カテゴリに入れます*mypackage
(または、より説明的にしたい場合*mypackage-slug
)。
これらのカテゴリのメソッドは、自動的にMyPackageパッケージに属します (少なくともモンティセロの観点から)。
pharo 7 では、* は禁止されています。
メソッド編集ペインで拡張機能のチェックボックスをオンにする必要があることを示すメッセージが表示されます。
その場合、パッケージを選択できます。