2011-02-02 14 views
6

文字列からURLスラッグを作成するメソッドでStringクラスを拡張したいと考えています。拡張機能を独自のパッケージに移動する方法を示すリンクが見つかりました:Pharo Smalltalkクラスの動作を拡張する最も良い方法は?

Smalltalk Daily 07/13/10: Extending Behavior II

しかし、Pharo Smalltalkでは「パッケージに移動」オプションが見つかりません。新しいメソッドでコアクラスを拡張するのはいいですか?それとも良い方法がありますか?ファロまたはSqueakので

答えて

8

*mypackageと呼ばれる方法カテゴリーにmypackageとのための拡張メソッドを入れて(またはあなたが*mypackage-slugより説明できるようにする場合)。

これらのカテゴリ内のメソッドは、(少なくとも、ビューのモンティセロの点から)mypackageとパッケージ

8

に自動的に属しているが、「それだけで新しい方法でコアクラスを拡張し、または存在しても大丈夫ですもっといい方法?"

この決定にはトレードオフがあります。実際、PharoはString >> asUrlを、最近までit was removed as part of cleaning the systemまで持っていました。一方では、類似のプロトコルをもたない(意味的に類似している)オブジェクト間の変換方法を持つのは、悪いスタイル(Kent Beckのベストプラクティスを参照)です。さらに、これにより、コアクラス(StringやObjectなど)が膨大になります。しかし、あなた自身のアプリケーションでは、これらの要素のバランスを取る良い理由があるかもしれませんし、システムではなくアプリでパッケージ化しているので、それを取り除くことができます。

関連する問題