Clean Code アジャイルソフトウェア達人の技
株式会社ドワンゴ
著者:Robert C.Martin
訳者:花井志生
前書き
序論
謝辞
カバーの絵について
第1章 クリーンコード
そこにコードありき
粗悪なコード
混乱のために支払う総コスト
道場
我々が著者です
ボーイスカウトの規則
続編と原則
結論
参考文献
第2章 意味のある名前
序文
意図が明確な名前にする
偽情報を避ける
意味のある対比を行う
発音可能な名前を使用する
検索可能な名前を用いる
エンコーディングを避ける
ハンガリアン記法
メンバープレフィクス
インターフェイスと実装
メンタルマッピングを避ける
クラス名
メソッド名
気取らない
1つのコンセプトには1つの単語
ごろ合わせをしない
解決領域の用語の使用
問題領域の用語の使用
意味のある文脈を加える
根拠のない文脈を与えない
最後に
第3章 関数
小さいこと!
1つのことを行う
1つの関数に1つの抽象レベル
switch文
内容をよく表す名前を使う
関数の引数
副作用を避ける
コマンド・照会の分離原則
戻りコードよりも例外を好む
DRY(Don’t Repeat Yourself)原則
構造化プログラミング
なぜ関数をこのように書くのでしょう?
結論
SetupTeardownIncluder
参考文献
第4章 コメント
コメントで、ダメなコードを取り繕うことはできない
自分自身をコードの中で説明する
よいコメント
よくないコメント
参考文献
第5章 書式化
書式化の目的
縦方向の書式化
横方向の書式化
チームの規則
アンクルボブの書式化規則
第6章 オブジェクトとデータ構造
データ抽象化
データ/オブジェクトの非対称性
デメテルの法則
データ転送オブジェクト
結論
参考文献
第7章 エラー処理
リターンコードではなく、例外を使用する
最初にtry-catch-finally文を書く
非チェック例外を使用する
例外で状況を伝える
呼び出し元が必要とする例外クラスを定義する
正常ケースのフローを定義する
nullを返さない
nullを渡さない
結論
参考文献
第8章 境界
サードパーティーのコードを使用する
境界の調査と学習
log4jを学習する
学習テストは、タダ以上のものである
まだ存在しないコードを使用する
きれいな境界
参考文献
第9章 単体テスト
TDD三原則
テストをきれいに保つ
クリーンテスト
1つのテストに1つのアサート
F.I.R.S.T.
結論
参考文献
第10章 クラス
クラスの構成
クラスは小さくしなければならない!
変更のために最適化する
参考文献
第11章 システム
あなたは、街をどうやって造りますか?
システムを使うことと、構築することとを分離する
スケールアップ
横断的関心事
Javaプロキシ
Pure JavaのAOPフレームワーク
AspectJアスペクト
システムアーキテクチャのテスト実行
意思決定を最適化する
論証可能な価値を追加する際には、標準を賢く使用する
システムはドメイン特化言語を必要とする
結論
参考文献
第12章 創発
創発的設計を通して、洗練する
単純な設計への規則1:全テストを実行する
単純な設計への規則2~4:リファクタリング
重複の排除
表現に富む
クラスとメソッドを最小限に
結論
参考文献
第13章 同時並行性
なぜ同時並行性が必要なのか?
難問
同時並行性防御原則
使用しているライブラリを知る
スレッドセーフなコレクション
実行モデルを見分ける
同期化メソッド間の依存関係に注意
同期化セクションを小さくする
正確な終了処理コードを書くのは難しい
スレッド化されたコードのテスト
結論
参考文献
第14章 継続的改良
Argsの実装
Argsクラス。大雑把な下書き
文字列引数
結論
第15章 JUnitの内部
JUnitフレームワーク
結論
第16章 SerialDateのリファクタリング
まずは、動作するようにする
そして正しく直した
結論
参考文献
第17章 においと経験則
コメント
環境
関数
一般
Java
名前
テスト
結論
参考文献
付録A 同時並行性II
クライアント/サーバーの例
結論
実行経路候補
さらに深層へ
ライブラリを知る
メソッド間の依存性が同時並行コードを破壊する
スループットを高める
デッドロック
マルチスレッドコードをテストする
マルチスレッドコードのテストのツールによるサポート
チュートリアル:コードサンプルの全体
付録B org.jfree.date.SerialDate
付録C 経験則のクロスリファレンス
後書き
索引