モジュールではなく名前空間にクラスを使用することは有効かつ/または許容されますか? たぶんそれは単なる意見の問題ですが、これが受け入れられている慣行であるかどうかを明確に言うことができる経験を持っている人がいると思いました.
例として、次のクラスを取り上げます。
class Parent
end
class Parent::Child1 < Parent
end
class Parent::Child2 < Parent
end
上記のコードが機能することはわかっていますが、名前空間にモジュールの代わりにクラスを使用するのは奇妙に思えます。親クラス名をサブクラスに追加したい理由は、多くのサブクラスを持つことを計画しており、名前の競合を避けたいからです。例えば:
class Priority
end
class Priority::Low < Priority
end
class Temperature
end
class Temperature::Low < Priority
end
これに代わる方法は、名前空間を使用せず、親の名前をサブクラス名の一部として使用することです。
class PriorityLow < Priority
end
Ruby での名前空間のベスト プラクティスはありますか?
アップデート:
@sawa はいくつかの例を以下に尋ねました。これは、ユーザーが Enum 型のメンバーであるクラスを定義できるようにするclassy_enumと呼ばれる、私が作成した Gem 用です。背景については、使用例のセクションを参照してください。私はコード ベースをクリーンアップしており、私が提案した命名スキームを改善できる可能性があることに気付きました。したがって、を使用する代わりに、使用PriorityLow
できますPriority::Low
(または最も理にかなっているものは何でも、私は後者に傾いています)