コードリーディングで実装力を向上させよ

1226viewsstarginestargine

このエントリーをはてなブックマークに追加
Code Reading―オープンソースから学ぶソフトウェア開発技法

本書はコードを読むことを独立した活動として専門に取り上げた最初の本である。

コードリーディング:便宜主義的かつ目的志向の作業

筆者はコードを小説のつもりで読むことがある。
ソフトウェア開発では、新機能の追加、バグの修正、新しい環境への統合といったことに相当(半分以上、40-70%)時間が使われている。

低品質なコード:

  • コーディングスタイルに一貫性がない
  • 意味もなく複雑な構造や理解不能な構造が使われている
  • 明らかな論理ミスや手抜きさがある
  • 移植性のない構造が多用されている
  • 保守されていない

>読むのは時間のムダ。「今読んでいるコードは良いコードか」を自問する。

コードを読むときは目標を決める。

例.
新しいパターンやスタイルを学ぶのか?
何かの要件を満たす方法を知りたいのか?
ざっと見てなにかいいものを見つけたいのか?
>読んでいる時にわからないことがあったら都度調べる。

プログラミングの学びかた:

  • プログラミングの基礎とコンピュータサイエンスの基本を抑える
  • 学習したい小さなプログラムを探す
  • それを実行してみる
  • それを積極的に小さく変更してみる

(考え方がなんとなくわかる)

  • リファレンスやドキュメントを読んだり、人に教えてもらったりする

ある機能を実装するための具体的な方法はコードを読むのが一番。

あるコードをあるプロジェクトに適用するときは、多くのコードから重要なヶ所を適切に選択する考えが必要である。
その際、大体のシステムではごくわずかの部分、1-2のファイルを理解、変更すればよい。

コードを手本に使うときは「柔軟に対応せよ」の方針が効く。
(ある1つの方法にとらわれない。ある程度探しても見つからなかったら別の方法を試す。)

コードを読むときは、問題解決のために可能な戦略ならどんなものでも試してみることが大切。

ex.
コメントやドキュメントの見直し

  • やりたい機能を表すキーワード、文字列でのコード検索
  • 見つかったらその対象コードを分離してよく理解する
  • そのコードが影響を与える部分を推察する

逆説的だが、あまり利用したいコードが小さく見つからない、絞り込めない、影響範囲がわからないときは、そのライブラリなど大きな単位で利用することを考える。

関数(≒プログラム)を理解する戦略:

  • 関数名から機能を推測する(推測が外れることは織り込んでおく)
  • 関数の冒頭に書かれているコメントを読む
  • 関数の使われ方を調べる
  • 関数本体のコードを読む
  • 関連ドキュメントを調べてみる

cf.
ジグソーパズル≒難しいコード
簡単なところから読んで理解できると、残りの部分もおのずと消去法でわかってくる。

第11章「総合的な例」

この章ではあるプログラムを実装するためにやったこととのその動機、感じたことが日記調に逐次書かれている。手順が具体的でわかりやすい。
本章で扱っている言語やプログラムは現在WEB開発がトレンドなインターネット業界では、やや内容的に乖離があるかもしれないが、やっていること、書かれていることは他でも応用可能であるように感じる。例としてはクラスをコードベースでどんどん調べていたりなど。また、仮説を立て、狭い範囲、最低必要な範囲で調査を行い、その結果にもとづき、また以上を繰り返すといったものが基本的な流れである。詳細は本書を参照。

感想

プログラミング初心者を脱出するには欠かせない一冊だと感じた。このまとめに記載されていることは、やや抽象度が高いアドバイス、記述だが、これらの考え方、方針を様々なシーンで適用することで、スキルが上がることを実感している最中である。

Code Reading―オープンソースから学ぶソフトウェア開発技法

Code Reading―オープンソースから学ぶソフトウェア開発技法

  • トップスタジオ,まつもとゆきひろ,平林俊一,鵜飼文敏

関連まとめ

本のまとめカテゴリー


コメントを書く