銀河鉄道

【プログラミング学習】現場で役立つシステム設計の原則〜変更を楽で安全にするオブジェクト指向の実践技法

サムネイル
現場で役立つ設計の原則
そもそも
設計って
なんだろう

「設計とは何か」が、とてもわかりやすい本でした

設計とは何か

プログラミングでの「設計」の意味とは

  • どこにロジックを書くかを考えること
  • どこにロジックがあるかをわかりやすくすること

つまり。コードを整理整頓すること

設計は、「整理整頓」・・・

どこにロジックを書くか

それを整理するのが設計

どこに置くかといえば、クラス(オブジェクト)の中

ロジック置き場を作るためのオブジェクト指向

オブジェクト指向とは

ロジックがどこに書いてあるかを見つけやすくするために、業務をクラス(オブジェクト)で表現する設計手法

つまり。業務上のルールをそのまま「クラス(オブジェクト)」にする

設計は、業務をクラスにする・・・

対象業務(=ドメイン)を
オブジェクトにすることを
「ドメインオブジェクト」と呼ぶ

どんなクラスにするかが重要

ルールすべてを扱う大きなクラスは、考えない

現場で役立つシステム設計の原則

目指すは、小さなクラス

『「短いメソッド」の入った「小さなクラス」』の集まりが、クラス

↓たとえば・・・

  • 値オブジェクト
    • 値を扱うクラス
    • 例)Period(期間:開始日+終了日)
  • コレクションオブジェクト
    • コレクションを1つだけ持つクラス

メソッドとは、ロジック置き場のこと
小さな置き場がたくさんある、小さなクラスを作る

設計は、小さなロジック置き場を作る・・・

どのクラスに置くかも重要

データとロジックを一体にする設計を徹底する

現場で役立つシステム設計の原則

ロジック置き場は、データを保持するクラスの中

データをgetするときは「計算後のデータ」をgetする。
getしてから、別の場所で計算をさせない

データのある場所が、ロジックのある場所

設計は、データとロジックを分離しない・・・

どんなふうにロジックを置くか
「小さくて短い」置き場
データ保持クラスにロジックを置く

そのためには、業務の分析が欠かせない

要件を理解し整理する分析作業も、設計やプログラミングをする人がやるべき

現場で役立つシステム設計の原則

分析と設計は同時

  1. 分析
    • 人間のやりたいことを正しく理解すること
    • 業務内容のヒアリング
  2. 設計
    • 人間のやりたいことの実現方法を考えること
    • クラスの発見

「クラスの発見」とは、「データ&ロジックのまとまり」を見つけること

設計は、ヒアリングしながらクラスを発見する・・・

クラスの発見は、かなり難しい

良い設計は最初からは手に入らない

現場で役立つシステム設計の原則

良い設計とは

「良い・悪い」は単純に、「目的を果たせているか・いないか」

設計の目的:修正を楽で安全にすること

コード修正のときにラクだと感じたら、良い設計

設計は、修正を楽で安全にする・・・

まとめ:オブジェクト指向で設計をするとは

オブジェクト指向で設計すると、こうなる

「プログラムの構造」と「業務の構造」が一致する
ソースコードで「業務マニュアル」を作るような感覚

  • 設計とは、コードを整理整頓すること
  • オブジェクト指向は、業務ルールをそのままクラスにする
  • 小さなロジック置き場を作る
  • データを保持するクラスに、ロジックも置く
  • ヒアリングしながらクラスを発見する
  • 修正がラクだと感じたら良い設計

設計のイメージがわいてきた

オブジェクト指向についてはこちらも

著者

author
月うさぎ

編集後記:
この記事の内容がベストではないかもしれません。

記事一覧