Head Firstオブジェクト指向分析設計 ――頭とからだで覚えるオブジェクト指向の基本を読み始めた

芸事を学ぶのは「守破離」と申しますが、プログラミングという大いなる芸事におきまして「守」の段階が終わりませぬ。

というわけで、↓を読み始めました。

 

www.oreilly.co.jp

 

まずは手を動かそうとサンプルコードを読み・・・おっとJavaだ。

読めるけど自分がメインとしているC#に引き込んでみよう。

というわけで、まずはギター在庫検索システム<Rickが顧客を失い始めたバージョン>のコードをGitHubに上げてみました。

github.com

 

ここからバグ取りとコード改善が始まるのですが、さてどこまでできることやら。

 

<追記 C#に移植してみて>

JavaからC#ですからほぼまるまるコピーして少々編集で済みそうなものですが、余計な気持ちだしてC#らしくなるよういじっています。

①Guitar.cs

 getter,setterはプロパティにしました。

②Inventory.cs

 getGuitarメソッドの中身はLINQのFirstOrDefaultメソッドにしました。

 文字列の空文字判定はstring.IsNullOrEmptyメソッドにしました。

 searchメソッドのループ処理をforからforeachにしました。

  ※判定部分をFuncに切り出したらLINQのFirstOrDefaultになりそうですが、どうせ後の展開でGuitarメソッドに移すのでここは放置しました。

③FindGuitarTester.cs

 Mainメソッドの文字列生成に書式指定項目({0}~{5})とやらを使っています。この部分はGuitarクラスに移すべきものか否かわかりません。

 

<追記 文字列比較の放棄 の実装>

stringをenumに置き換えるというだけ。C#ではenumにメソッドを配置できないんでそこは除外しているがToStringしたら勝手にenumの文字にしてくれるのでとりあえずはそれでOKにしておく。本では全大文字から先頭大文字に変換しているがめんどくさいので省略(どうしてもというならenumのほうを先頭大文字にすればOK)。