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?

【読書記録】プリンシプル オブ プログラミング (プログラミングセオリー)

Last updated at Posted at 2024-07-23

読んだ本

「プリンシプル オブ プログラミング3年目までに身につけたい一生役立つ101の原理原則」

この記事では、3章の プログラミングセオリー について記載します。

プログラミングセオリー

A theory of programming

どういうこと?

プログラミングの最大の関心事は「最高のコード」を作りあげること。
最高のコードとは、「拡張方法が多く存在し、余分な要素が存在せず、読みやすく、理解しやすい」コード。

最高のコードを実現するための「セオリー(確立された方法)」がある

プログラミングセオリーを支える3つの価値

  • コミュニケーション(コードも人に見せる「文章」である)
  • シンプル
  • 柔軟性

プログラミングセオリーを実現する6つの原則

  • 結果の局所化
  • 繰り返しの最小化
  • ロジックとデータの一体化
  • 対称性
  • 宣言型の表現
  • 変更頻度

原則1: 結果の局所化

どういうこと?

  • 変更の影響が局所に留まるようにコードを構成する
  • 結果が局所化されていないと、ある部分の変更が全く別の部分に影響して、変更コストが急増する

どうすれば?

  • 関係性の高いコードを集約してモジュール化(部品)する

モジュールとは何か?

モジュールとは、プログラミングにおいて関連するコードをひとまとめにした単位です。コードを小さな部品に分割し、それぞれが独立して機能するように設計することができます。
参考: https://zenn.dev/yoojiyang/articles/3ac641e20ec05d

原則2: 繰り返しの最小化

どういうこと?

  • 重複を極力排除する
  • 繰り返しのコードは「結果の局所化」原則を侵害し、変更コストを増大させる

どうすれば?

コードをたくさんの小さい部分に分割する

原則3: ロジックとデータの一体化

どういうこと?

  • ロジックとロジックが操作するデータを互いに近くに置くようにする
  • コードを修正する場合、ロジックとそのロジックが操作するデータは、大抵同じタイミングで変更するため

どうすれば?

  • ロジックとデータをコード上で近くに配置する

原則4: 対称性

どういうこと?

  • コードに一貫性を持たせる

どうすれば?

  • 同じ種類のもの、つまり同質なものは、同じレベルで表現する。
    • 「追加」メソッドがあれば、対になる「削除」メソッドを作成する
    • あるモジュール内のデータは、すべて生存期間が同じであるようにする

原則5: 宣言型の表現

どういうこと?

  • コードの意図を伝えようとする時、できるだけ「命令型」よりも「宣言型」で表現する
  • 命令型のコードは、常に状態・制御・データフローを頭に描かないと、事実を正確に理解できない。そのため、流れを追いながら読まなければならない。

宣言型プログラミング
   何をするかが明確に宣言(記述)されている
命令型プログラミング
   どのように実行させるかを記述
参考:https://qiita.com/Jungle-King/items/75bce55427285d7c6aae

どうすれば?

  • 宣言型のコードを取り入れ、シンプルに意図を表現する

原則6: 変更頻度

どういうこと?

  • 変更理由でグルーピングする
  • コードを修正するタイミング(変更頻度)が同じ。つまり、変更理由が同じ。
  • 変更理由が1つであることは、関連性の高いコードが集合している事になる(=高い凝集性を満たしている)。変更対象範囲が狭く、影響範囲も狭くなるので、修正しやすいコード。

どうすれば?

  • 変更するタイミングが同じ要素は同じ場所に置く
  • 変更理由や頻度が同じものを集めれば、自ずと「単一責任の原則」を満たすモジュールが出来上がる
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?