プログラミングをする上で覚えておくべき原理原則


はじめに

コードを書き始めると参考書や自己流の規則に染まってしまいますが、早い段階から原理原則を学ぶことによって、今後チーム開発をする際の共通認識となり便利かと思います。本記事では7つの原則をメモしていますが、個人的にエッセンスを抽出・解釈すると以下の3つが大切だと感じました。

Minimality(最小性)
Reusability(再利用可能性)
Readability(可読性)

それでは詳しく各原則をみていきましょう。

説明

KISS : Keep it simple, stupid
// シンプルにしておけ!この間抜け

  • コードを書くときに簡潔・単純にすることを意識する
  • それが本当に必要なコードなのかを吟味する
  • 今、必要とされているコードだけを書く
  • 勝手に要件を付け加えない

DRY : Don't Repeat Yourself
// 繰り返しを避けろ

  • それぞれのコードに唯一無二で明確な意味を持たせる
  • オブジェクト指向プログラミングを活用する
  • コードの再利用によって生産性を高める

YAGNI : You Ain’t Gonna Need It
// それはきっといらないよ

  • ソフトウェアの変化予測は不可能である
  • 不必要なコードを書くことは複雑性を生む
  • 今、必要とされているコードだけを書く

PIE : Program Intently and Expressively
// 意図が明確に読み取れるコードを書け

  • ソフトウェアの動作を完全・正確に知ることのできるものはコード以外存在しない
  • 書いていた時間よりも読まれる時間の方が長い
  • 読むときに効率を上げるためにWhy, What, Howをコメントする

SLAP : Single Level of Abstraction Principle
// 抽象度を統一せよ

  • 抽象度によってコードを分離するべきである
  • 外部公開されたユーザー側のコードは高水準である
  • 処理や計算、API利用に関わる非公開のコードは低水準である
  • 序文(コメントによる要約)、目次(関数の一覧)、セクション、章、段落

SRP : Single Responsibility Principle
// 単一責任の原則

  • クラスを変更する理由は複数存在してはいけない
  • 変更の理由が変更の理由たるのは、実際に変更の理由が生じた場合だけである
  • 結合している役割を見つけそれらを分離する作業は、ソフトウェア設計の本質である

OCP : Open-Close Principle
// オープンクローズドの法則

  • モジュールは拡張に対して開いていなければならない
  • モジュールは修正に対して閉じていなければならない

参考: 【脱初級プログラマ】プリンシプル オブ プログラミング まとめ - Qiita