【プリンシプルオブプログラミング】手法

 

目次

はじめに

この記事は「プリンシプルオブプログラミング」を読んで自分なりにまとめた学習メモです。 

手法 〜プログラマの道具箱〜

曳光弾

プログラミングにおける「曳光弾」とは、優先的に検証したい部分を、先行的にプログラミングすること。簡易で構わないので、実際の環境下で動作して、確認できる、エンド・ツー・エンドのソフトウェアを作成する。

ここで作成するコードは、フレームワークであり、土台となる。

 

【メリット】

  • ユーザーからのフィードバックが得られる
  • プログラマが活躍できる舞台を早めに整えられる
  • デバッグやテストが早く正確にできる
  • デモ可能なソフトウェアを確保できる
  • 進捗が明確になる

【やるべきこと】

最初に動作する土台を作る。

土台のコードは最小限に留める。

 

【プロトタイプとの違い】

  • プロトタイプ:ソフトウェアのコンセプトや最終形態についての「理解を検証する」ためのもの。
  • 曳光弾:ソフトウェア全体がどのように連携するのかを明らかにする。ユーザーに対して、どのような使い勝手になるのかを提示する。

 

契約による設計

「契約による設計」とは、関数と、関数を呼び出す側で、互いに「契約」結んでいると見なしてプログラミングすること。

 

【やるべきこと】

コメントとアサーションで契約する。

 

【注意点】

  • 関数側では、引数の調整を行わない
  • 関数側のアサーションを、ユーザーの入力チェックに使用しない
  • 関数側では、想定は厳格に、確約は寛容に

 

防御的プログラミング

関数に不正なデータが渡された時に、それが他の関数のせいであったとしても、被害を受けないよう「防御的な」コードを書いておく。

 

【考慮すべき点】

  • 外部ソースからのデータ入力の値を確認する(「想定内のエラー」を検出)
  • 関数の入力引数の値を確認する(「想定外のエラー」を検出)

【意識すべきこと】

バリケード戦略」を取る。バリケードを構築して、被害を封じ込める。

 

ドッグフーディング

自分で開発したソフトウェアは、自ら使用するようにする。

人に使ってもらうものなので、自ら率先して「味見」して、その塩梅を確かめる責任がある。

 

【意識すべきこと】

リリース前に、自分でユーザーのように使う。

 

ラバーダッキング

ラバーダッキング」は、ある種のデバッグ手法。

プログラミングにおいて、発生している問題や、問題を抱えているコードを「誰か」に説明する。すると、問題の原因に自ら気付き、自己解決できることがある。

 

【意識すべきこと】

問題解決が停滞した場合、「誰か」にそれを説明する。

 

コンテキスト

コンテキストとは、周りの状況や背景のこと。文脈とも言う。

 

【2つの側面】

  • コードの読み書きに利用:コードを書く人と、コードを読む人とのコミュニケーション。
  • 思考のツールとして利用:プログラミングは問題解決の作業。

【意識すべきこと】

コードを書く時、コンテキストを先に示すようにする。