Hatena::Groupstudyroom

文::字

2009-12-27

[]プログラム 設計 メモ 17:32 プログラム 設計 メモ - 文::字 を含むブックマーク

全然基礎がなっていないので何かを作ろうとするときにいつもどういう設計にすればいいか分からなくて困るんだけれど、そうしている中でも最近作りながら考えたり意識していること。

  • 手続き型で作るかオブジェクト指向で作るか
    • 書き捨てのプログラムは上から下にダラダラ書いて済ませてしまいがちだけど、その書き捨てがいつもっと大きなものに発展していくか分からないので、機能を付け足したり後から別のプラットフォームで動かしたりするために極力オブジェクト指向で作る
      • プロダクディブ・プログラマにも似たようなこと書いてあった
  • クラス設計をどうするか
    • クラス名が「名詞」になるように作る
      • 動詞っぽい名詞もあんまり良くない、Parser とか Generator とか Extractor とか
      • 動詞はメソッドに持たせる
    • 「魔法」っぽく見えるように作る
      • 内側の低レベルな汚い処理は奥のほうに隠しておいて、インタフェースではもっとレベルが高い問題を扱うようにする
    • 抽象度を合わせる
      • 「魔法っぽく〜」とも関連すると思うんだけど、顧客操作なのにいきなり SQLStatement クラスが出てきたりとかカッコわるい
      • 抽象度を合わせるためなら、一行メソッドを定義してもよい (プロダクティブ・プログラマ)
    • 組み込みクラスを拡張するように作る
      • Array Hash String とか (特に Hash) で済ませてしまいがちのところを、もっとそのデータに独自の振る舞いを持ってほしくないか考える
    • デザインパターンを採用する
    • 条件文や繰り返し文を減らす
      • 手続き型っぽく作ってるとどうしても条件文とか繰り返し文が増えてきて考慮しなければならない状態が増えてきて頭がこんがらがる
      • 状態を切り分けてオブジェクトとして表現できないか考える

ENriqueENrique2013/12/28 22:04It's great to find an expert who can exialpn things so well

SusySusy2013/12/29 15:40This is an <a href="http://lradmx.com">arclite</a> that makes you think "never thought of that!"