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.

読書要点「プリンシプルオブプログラミング」第6章

Posted at

手法

高度な知的作業であるプログラミングで重要になるのは脳のリソースの分散である。
この項目には問題解決の手法、あるいは問題を未然に防ぐための道具が詰まっている。

曳光弾

曳光弾とは、通常弾の間に装填された軌跡の分かる弾丸である。
狙いを修正するのに役立つ。
プログラミングにおける曳光弾とは、優先的に検証したい部分を先行的に作ることである。
すなわち、最初に動作する土台を作ることである。

完成品の制度を高めるためには、開発の途中でできるだけ多くのフィードバックを得ることが重要である。
完成品の形態が見えない中でこれを達成するためには、曳光弾のアプローチが有用となる。
根幹となる部分を作っておけば、完成図を意識した開発が進められる上、クライアントからの意見をもらいやすい。

契約による設計

関数を呼び出す側が守るべき契約と、関数が守るべき契約を設定してプログラミングをすることを契約による設計と呼ぶ。
呼び出す側は関数を使うために必要な条件を用意しておき、関数側は受け取った入力に対して正しい引数を渡す必要がある。
関数の関係を整理することができ、シンプルさや保守の容易さにつながる。

契約の内容はあらかじめコメントで伝えておき、契約が果たせるか、果たせているかどうかはアサーションを使ったチェックを行う。

防御的プログラミング

自動車の防御運転、「かもしれない運転」と同じ姿勢でプログラミングを行う。
問題のあるやり取りが発生したときに被害を未然に防ぐコードを書く。
想定内のエラーはもちろん、想定外のエラーが発生したときに問題を波及させないチェックが必要になる。
厳重なチェックを行うためには、バリケードとクリーンルームを設定し、クリーンルームにチェックを行っていないものを入れないようにするとよい。

ドッグフーディング

ソフトウェアを自ら使用するようにする。
ユーザー視点だからこそ得られる問題点、改善点、使い勝手の良し悪しは少なくない。
開発側がユーザー視点でソフトウェアに必要なものを把握できることは大きなアドバンテージである。

ラバーダッキング

ラバーダッキングは、誰かに現在発生している問題を説明することである。
デバッグの一種ともいえる方法で、実際に説明をするだけで問題点が整理され、解決してしまう場合も少なくない。
アドバイスを貰わなかった場合でも説明するだけで十分な高価が得られるため、安価で高価の高い手法である。

コンテキスト

コンテキストとは文脈のことである。
コードを書くときは、読む人のことを考えて文脈のあるコードを書くようにする。
思考の際も、文脈をおさえることで問題点の整理につながり問題解決にたどり着きやすい。
作業しているときはコンテキストを見失うことも少なくないが、常にコンテキストを自分の中で示しておくことでスマートな作業につながる。

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?