C# 自作ライブラリの検討メモ
デザインパターン、オブジェクト指向エクササイズの教材として自作ライブラリを作ろうと検討中。
名前空間についてメモ
Nmdm
⇒最上位の名前空間、ブログ名から
Nmdm.Pair
⇒ジェネリックインターフェースで二つのインスタンスのペアを表現
Nmdm.Collection
⇒IEnumerableを持つ拡張用インターフェース
Nmdm.Range
⇒ジェネリックインターフェースで型の範囲を表現
Nmdm.Comparer
⇒.NetのIComparer関連の拡張 インターフェースは不要
基本型を拡張する場合の名前空間(例:string)
Nmdm.String
⇒stringインスタンスを持つインターフェースIStringの宣言場所
Nmdm.String.Wrapper
⇒基本型のラッパー実装場所
Nmdm.String.Decorator
⇒単一のstring型インスタンスで成立する処理をデコレーターパターンで記述、IStringを返す。
ToWide、ToNarrow、ToUpper 等
Nmdm.String.Comparer
⇒IComparer
Nmdm.String.Adapter.Length
⇒(変換元の型).Adapter.(変換先の型)のルールで変換ロジックをアダプターパターンで記述
Pair、Collection、Rangeなど汎用的なデータ構造は型名の後に名前空間を入れる。
Nmdm.Int.Pair.Adapter.〇〇
⇒IPair
Nmdm.Int.Range.Decorator.〇〇
⇒IRange
基本ルール
・完全コンストラクタパターン
・メソッドをアダプタパターンまたはデコレーターパターンで分離、ミックスインにする。
・処理を実装する箇所では全てのメンバーを使う。
・LengthやCount、Year、Monthといった用途が定まりそうなものは別途インターフェースを設け、IIntなどより抽象的な型に依存させる。