# 08ex3. Naming Samples ________________________________________ ## 1. ドメインレベルメソッドの命名法 目的を見失うな ```text good! celebrateBirthday() bad.. ifBirthdayBuyCake() ``` 意味のない抽象化するな ```text good! loadData(), restoreData(), createData(), newData(), Data.create() bad.. getData() ``` ________________________________________ ## 2. Lowレベルの命名サンプル ```text 一般 obj.GetX() Xを寄越せ obj.SetX(x) Xを保持しろ...Getと対応関係でない限り、非推奨 obj.Get(key) valを寄越せ obj.Set(key, val) valを保持しろ obj.CreateX() Xを生成して寄越せ obj.NewX() Xを生成して寄越せ obj.ToX() Xになった値を寄越せ obj.Doing Doする直前のイベント obj.Done Doした直後のイベント obj.OnXDoing Doする直前のイベント obj.OnXDone Doした直後のイベント obj.IsDone Doされたか obj.CanDo Doできるか ファイル操作 fi.CopyTo(dest) destにコピーしろ fi.MoveTo(dest) destに移動/リネームしろ za.CreateEntryFromFile(src, name) srcをnameという名前でEntryを作成して、zipに追加しろ za.ExtractToDirectory(dest) zipをdestディレクトリへ解凍しろ staticヘルパー File.Copy(src, dest) srcをdestにコピーしろ File.Move(src, dest) srcをdestに移動/リネームしろ ZipFile.CreateFromDirectory(src, dest) srcディレクトリをdestとして圧縮しろ ZipFile.ExtractToDirectory(src, dest) srcをdestディレクトリへ解凍しろ List list.Add(obj) 末尾に追加 list.Remove() 末尾を削除 list.RemoveAt(i) 指定した添え字の要素を削除 list.Contains(obj) objを含むか LINQ enumerable.Select enumerable.Where enumerable.OrderBy ロード元など obj.LoadFromFile() obj.LoadFromDb() ojb.LoadFromWebService() 保存先など obj.SaveToFile() obj.SaveToDb() obj.SaveToWebService() ``` ________________________________________ ## 3. If Condition vt o 前提として、ドメインレベルメソッドの命名がつけられないか考える 適切な表現が見つけられない場合だけ、代替案として下記を採用する ```text 方針1:doX 方針2:doXIfNeeded 方針3:ensureXIsY ```