0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【プリンシプルオブプログラミング】 第3章(3.11~3.21)「思想」要点抜粋

Posted at

この記事は「プリンシプルオブプログラミング」という書籍の、特に重要だと感じた部分を紹介します。この書籍は全部で7章あります。1記事につき1章(項目が多い章は分割)を取り上げていき、今回は第3章(アーキテクチャ根底技法)の部分です。

第3章 「思想」 〜プログラミングのイデオロギー〜

3.11 アーキテクチャ根底技法

よいコードの基礎原理
  • 抽象(3.12)
  • カプセル化(3.13)
  • 情報隠蔽(3.14)
  • パッケージ化(3.15)
  • 関心の分離(3.16)
  • 充足性、完全性、プリミティブ性(3.17)
  • ポリシーと実装の分離(3.18)
  • インターフェースと実装の分離(3.19)
  • 参照の一点性(3.20)
  • 分割統治(3.21)

3.12 抽象

  • 抽象は「捨象」と「一般化」の2つの観点からまとめられる
  • 捨象:対象物の本質をむき出しにすることで、複雑度を下げ、真なる問題に集中できるようにする
  • 一般化:複数のものを、共通の特徴によってグルーピングし、「同じ」と見なすこと
  • 複雑な対象に取り組むときは「捨象」する -> 余計なものを捨て、本質を捉える
  • 異なる複数の対象に取り組むときは「一般化」する -> 共通点を組み合わせ、汎用的な概念を構成する

3.13 カプセル化

  • 関連性の強いデータ群とロジック群を、モジュールという膜で包み込むこと
カプセル化のメリット
  • 関連のない要素が混じらず、コードが見やすい
  • 変更時の影響がモジュール内に閉じる
  • 影響度が明確になり、コード変更が容易
  • それぞれが独立した部品となり、再利用性が高まる
  • 小さい単位に分割されるので、複雑な問題に対処できる

3.14 情報隠蔽

  • クライアントが知る必要ない内部の詳細部分は見せない
  • インターフェースが小さくなり、やりとりがシンプルになる
  • コード全体の複雑性を下げる
カプセル化と情報隠蔽の違い
  • カプセル化:関係ある要素を集めてモジュール化、関連の深いデータと関数を1箇所にまとめること
  • 情報隠蔽:モジュールの内部状態や内部関数を隠蔽すること
関連
  • 「パルナスの規則」

3.15 パッケージ化

  • モジュール:コードの関連要素をカプセル化したもの
  • パッケージ:モジュール群をグルーピングしたもの
パッケージ化のメリット
  • ソフトウェア全体が、パッケージという小さい単位に分割され、複雑性が下がる
  • パッケージ内は、関連のないモジュールが混じらず、管理しやすい
  • 修正に対して、影響度がパッケージ内に留まる可能性が高く、コード変更がしやすい
  • 依存関係が整理され、パッケージを単位とした再利用がしやすい

3.16 関心の分離

  • 「関心」=ソフトウェアの機能や目的のこと
  • 代表的なパターン:「MVC(Model-View-Controller)」
  • 代表的な技術:「アスペクト指向プログラミング(AOP)」

3.17 充足性、完全性、プリミティブ性

  • 充足性:モジュールが表現しようとしている抽象が、それを伝えるために十分であるか
  • 完全性:モジュールが表現しようとしている抽象が、すべての特徴を備えているか
  • プリミティブ性:モジュールが表現しようとしている抽象が、すべて純粋であるか

3.18 ポリシーと実装の分離

  • 1つのモジュールで「ポリシー」と「実装」の両方を扱ってはいけない
  • ポリシーモジュールはそれぞれのソフトウェアに特化しているため再利用できない
  • 実装モジュールは「純粋」なモジュールである、再利用できる

3.19 インターフェースと実装の分離

  • インターフェース:クライアントからの使われ方
  • 実装:機能の実現方法
  • インターフェースに対してプログラミングするのであって、実装に対してプログラミングするのではない

3.20 参照の一点性

  • 変数の値を初期化したら、以後、値を変更しない(単一代入) -> 見通しのよいコードになる

3.21 分割統治

  • 大きな問題は小さな問題に分け、個別に解決する
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?