Web+DB Press Plus
良いコードを書く技術
読みやすく保守しやすいプログラミング作法
著:縣 俊貴
出版社:技術評論社
増補改訂版を先に読んでいたにもかかわらず、ISDNが違っていたので、旧版を購入してしまった。
普通のプログラマ、中級のプログラマ、達人プログラマのやり取りがレベル感を語ってくれます
最近は、AIがプログラミングするようになって、コードを書くことが軽視されているように思えるようになるなか、あえて良いプログラムを書くことを前面に出すことは良いと思います。
でも、同じ人間でも、調子によって、書きっぷりは変わるし、ましてや、別の人間が書く時に、統一感が失われるのは、はがいいものです。
ひとつ言えることは、コードは、長く、受け継がれていくものであって、まさに、その会社の資産となっていくものであるので、次の担当が、理解しやすく、メンテがしやすいように用意するのは礼儀かとおもいます。
どうしてこうなっているのか、わかれば、デグレードも減り、開発工数も圧縮できます。
それは、CI/CDなどの技術が導入された今日でも変わらないと思います。
目次 (増補改訂との差異 *:他、増補改訂では章がひとつ増えています)
はじめに
謝辞
第1章 良いコードとは何か
1.1 良いコードの定義と価値
1.2 良いコードの定義
1.3 良いコードの価値
1.4 代表者の声
1.5 まとめ
第2章 良いコードを書くための5つの習慣
2.1 良いコードは1日にしてならず
2.2 習慣その1 読む ── コードを読んで読んで、読みまくれ!
Column:GitHubでコードの海を泳ぐ
2.3 習慣その2 書く ── とにかくコードを書こう
Column:1人でプログラムを書けますか?
2.4 習慣その3 道具を磨く ── 使う道具は常に磨いておこう
Column:良い道具に乗り換える
2.5 習慣その4 知る ── 良い知識を得よう
2.6 習慣その5 聞く ── アウトプットと人からのフィードバックでさらなる成長を
2.7 まとめ
第3章 名前付け
3.1 良いコードは良い名前から生まれる
3.2 代表者の声
3.3 良い名前の条件
Column:名前の流行り廃り
3.4 変数名
Column:変数の種類
3.5 メソッド名
Column:メソッドの種類
3.6 クラス名
3.7 パッケージ/ネームスペース名
3.8 プロジェクト名
3.9 まとめ
Column:あるWebアプリケーションフレームワークでのクラス名の変遷
第4章 スコープ
4.1 スコープを意識していますか?
4.2 スコープって何?
4.3 スコープを小さくして覚えておくことを減らそう!
4.4 代表者の声
4.5 変数のスコープ
Column:JavaScriptの奇妙なスコープ
4.6 メソッドのスコープ
4.7 クラスのスコープ
4.8 キャストを使用した可視性の制御
4.9 より大きな粒度のスコープ
4.10 まとめ
第5章 コードの分割
5.1 適切な長さにコードを分割する
5.2 なぜコードを分割するのか
5.3 代表者の声
5.4 2つの方向からの分割
5.5 お題 クライアントにXMLを返すWeb APIの処理を分割する
5.6 ステップ1 ベタなコードで書いてみる
5.7 ステップ2 共通処理をメソッドに抽出して分割する
5.8 ステップ3 処理単位で分割する
5.9 ステップ4 状態を持つ処理をクラスに抽出して分割する
5.10 まとめ
第6章 コードの集約
6.1 コードの重複は悪
6.2 代表者の声
6.3 メソッドに抽出してまとめる
6.4 継承でまとめる
6.5 ユーティリティクラスにまとめる
6.6 サービス層にまとめる
6.7 オブジェクトにまとめる
6.8 定数にまとめる
6.9 まとめ
Column:まとめすぎにご用心
第7章 コードのパフォーマンス
*7.1 パフォーマンスを意識していますか?
7.2 代表者の声
7.3 パフォーマンスは計算量で決まる
7.4 パフォーマンスチューニングの手順
7.5 アルゴリズムの選択以外のパフォーマンスチューニング
7.6 パフォーマンスチューニングの指針
7.7 まとめ
第8章 ユニットテスト
8.1 テストはお好きですか?
8.2 ユニットテストって何?
8.3 代表者の声
8.4 ユニットテストの効能
8.5 お題 Webアプリケーションのセキュリティテスト
8.6 ステップ1 データベースにテストデータを登録する
8.7 ステップ2 画面の実装
8.8 ステップ3 画面のユニットテスト(正常系)
8.9 ステップ4 画面のユニットテスト(異常系)
8.10 ユニットテストの指針
8.11 まとめ
Column:言語別のテスティングフレームワーク
第10章 抽象化
9.1 抽象化がプログラミングのパワーを最大化する
*9.2 配列/コレクションって何?
*9.3 配列/コレクションを利用した抽象化とは?
9.4 代表者の声
9.5 お題 画像ファイルの一覧を表示するWebアプリケーション
9.6 ステップ1 ベタなコードで書いてみる
9.7 ステップ2 可読性を高めるためのメソッド抽出
9.8 ステップ3 関連するデータのデータ構造を整理
9.9 ステップ4 配列/リスト化して抽象化
9.10 抽象化の指針
9.11 まとめ
第10章 メタプログラミング
10.1 プログラミングをプログラミングする
10.2 代表者の声
10.3 メタプログラミングって何?
Column:流れるようなインタフェースとstaticインポートによる内部DSL
*10.4 お題 Excelを使った外部DSL
10.5 ステップ1 ベタなコードで書いてみる
*10.6 ステップ2 メタデータをExcelに移動する
*10.7 ステップ3 リフレクションAPIで変換ルールを動的に適用する
10.8 まとめ
第11章 フレームワークを作ろう
11.1 フレームワークの動作原理を知る
11.2 代表者の声
11.3 お題 Webアプリケーションフレームワークを作ろう
11.4 ステップ1 素のサーブレットで書いてみる
11.5 ステップ2 フロントコントローラとアクションクラスの導入
11.6 ステップ3 ルーティング情報の外部ファイル化
11.7 ステップ4 よく使う処理を簡単に実行できるように共通化する
11.8 ステップ5 フレームワークをパッケージ化する
11.9 まとめ
付録A コードリーディングの方法
A.1 コードには動的な読み方と静的な読み方がある
A.2 お題 Apache Commons IOのコードを読む
A.3 ステップ1 対象のコードをダウンロード(チェックアウト)する
A.4 ステップ2 静的な方法でコードを読む
A.5 ステップ3 動的な方法でコードを読む
A.6 まとめ
付録B 解説付き参考文献
あとがき
索引
著者プロフィール
ISBN:9784774145969
判型:A5
ページ数:240ページ
定価:2280円(本体)
2011年05月10日初版第1刷発行