コードを読むときの道しるべ

1338viewsstarginestargine

このエントリーをはてなブックマークに追加
プログラマーのためのソースコードを読む技術

【目次】実書より書き起こし

第1章 プログラムを読もう

プログラムを読む理由
 知識/技術を学ぶため
 開発中のプログラムのレビュー
 既存のプログラムをメンテナンスするため
“駆け出しプログラマー”に足りないもの

 失敗に取り組む力が乏しい

 写経とパッチワークと穴埋めの経験しかない
 アルゴリズム、イディオム、デザインパターンなどに対する理解不足
 良質なソースコードを読み解いた経験が少ない
プログラムの行間を読もう
 データ構造、アルゴリズム、デザインパターン、イディオム、設計思想を読み解く
 行間/字句間に隠蔽された振る舞いを読み解く
コメントに過度の期待はしない
 コメントは言語やライブラリに対する知識の未熟さを補完してくれるものではない
 コメントはなぜそう書いたかという理由を書きとめるもの
 どうあるべきかは仕様書を、実際にどう動くかはコードを読むべき

第2章 読むために書く、書くために読む
プログラミングは体で覚えるもの

 本を読んだわけではプログラミングができるようにはならない

 授業や研修を受けただけではプログラミングができるようにはならない
 できないときの悔しさ、できたときの感動を味わう
誰かに教えてみよう
 他人に教えることは損ではない、むしろ得である
 教えるためには、相手の書いたコードをよまなければならない
読む訓練を目的として「書く」
 役にたたないプログラムを書こう
  練習のためのプログラムと実験のためのプログラム
  自由奔放に書こう
  必要かどうかはできるようになってから考えよう
 制御構造をエミュレートする
  if文
  switch
 誰かが用意したものではなく、自分で考えたコードを書くことの意義
書く訓練を目的として「読む」
 技術は盗むもの
 オープンソースを活用しよう

第3章 プログラムを読むために血肉化すべき素養 

行間、字句間に隠蔽された振る舞い
 プロシージャ(C,C++,Java,C#,PHP)
 例外処理(C++,Java,C#,PHP)
 「こんなときはどうなるの?」という疑問を持とう
データ構造、アルゴリズム、デザインパターン
 プログラミング言語以外の知識の必要性
 代表的なデータ構造
  配列
  線形リスト
 代表的なアルゴリズム
  値の交換
  整列
 代表的なデザインパターン
  シングルトン
言語/ライブラリ/フレームワークの知識の必要性

 辞書を引きながら文章を読むことはできても、文法を調べながら文章を読むことなどできない

 開発ツールのマニュアルは必ず読もう
“人間コンパイラ”を目指す
 コンピュータの動作原理を知る
 コンパイル結果を読もう

第4章 ソースコードの“地図”の描き方
ソースコードの“地図”とは?

 クラス図

 状態遷移図
関数やクラスが定義されている場所、使われている場所
 グローバル検索の使い方
ソースコードをビジュアル化しよう
 自動ドキュメント生成ツールの紹介
デバッガを使って、ソースコードを“旅”しよう
 デバッガで何ができるのか
 旅の前に地図でたどろう
ソースコード整形ツールを使いこなそう
 きれいに整形し直すだけで、読みやすさは劇的に向上する
 本質ではないことから解放されるために
オンラインマニュアルは大切なガイドマップ
 意外に活用されていない最良の情報源
 エラー/警告メッセージの意味を知ろう

第5章 実際にソースコードを読んでみよう
まずはウォーミングアップ
printfを読み解く

関連まとめ

本のまとめカテゴリー


コメントを書く