商品説明
内容紹介
※この商品はリフロー型で作成されており、ハイライトや検索、文字の大きさの変更などの機能がご利用可能です。
◆「あるべき構造」を知り、ソフトウェア開発の問題に立ち向かおう◆
本書は、より成長させやすいコードの書き方と設計を学ぶ入門書です。筆者の経験をふまえ構成や解説内容を見直し、より実践的な一冊になりました。
システム開発では、ソフトウェアの変更が難しくなる事態が頻発します。 コードの可読性が低く調査に時間がかかる、 コードの影響範囲が不明で変更すると動かなくなる、 新機能を追加したいがどこに実装すればいいかわからない......。変更しづらいコードは、成長できないコードです。 ビジネスの進化への追随や、機能の改善が難しくなります。成長できないコードの問題を、設計で解決します。
■こんな方におすすめ
・コードの設計スキルに興味がある人
・日々、悪いコードと向き合っていて改善したい人
・より良いコードを書きたい人
■目次
●第1章 悪しき構造の弊害を知覚する
1.1 意味不明な命名
1.2 理解を困難にする条件分岐のネスト
1.3 さまざまな悪魔を招きやすいデータクラス
1.4 悪魔退治の基本
●第2章 設計の初歩
2.1 省略せずに意図が伝わる名前を設計する
2.2 変数を使い回さない、目的ごとの変数を用意する
2.3 ベタ書きせず、目的ごとのまとまりでメソッド化
2.4 関係し合うデータとロジックをクラスにまとめる
●第3章 カプセル化の基礎ーひとつにまとめるー
3.1 クラス単体で正常に動作するよう設計する
3.2 成熟したクラスへ成長させる設計術
3.3 悪魔退治の効果を検証する
3.4 プログラム構造の問題解決に役立つ設計パターン
●第4章 不変の活用ー安定動作を構築するー
4.1 再代入
4.2 可変がもたらす意図せぬ影響
4.3 不変と可変の取り扱い方針
●第5章 バラバラなデータとロジックをカプセル化する実践技法
5.1 プリミティブ型執着
5.2 staticメソッドの誤用
5.3 初期化ロジックの分散
5.4 共通処理クラス(Common・Util)
5.5 結果を返すために引数を使わないこと
5.6 多すぎる引数
5.7 アクセス連鎖
●第6章 関心の分離という考え方ー分けて整理するー
6.1 関心の分離の基本
6.2 目的の違いを見破り、分離しカプセル化する
6.3 インターフェイスと実装の分離
●第7章 関心が混ざったコードを分けて整理する実践技法
7.1 ロジックの流用
7.2 継承による関心の混在
7.3 関心が混在する各種事例と対処方法
●第8章 条件分岐ー迷宮化した分岐処理を解きほぐす技法ー
8.1 条件分岐のネストによる可読性低下
8.2 switch文の重複
8.3 interface設計の考え方を身につけよう
8.4 条件分岐の重複とネスト
8.5 型の判定で分岐しないこと
8.6 フラグ引数
8.7 interfaceの使いこなしが中級者への第一歩
●第9章 コレクションーネストを解消する構造化技法ー
9.1 自前でコレクション処理を実装してしまう
9.2 ループ処理中の条件分岐ネスト
9.3 バラバラなコレクション処理
●第10章 設計の健全性をそこなうさまざまな悪魔たち
10.1 デッドコード
10.2 YAGNI原則
10.3 マジックナンバー
10.4 文字列型執着
10.5 グローバル変数
10.6 null問題
10.7 例外の握り潰し
10.8 設計秩序を破壊するメタプログラミング
10.9 技術駆動パッケージング
10.10 サンプルコードのコピペ
10.11 銀の弾丸
●第11章 名前設計ーあるべき構造を見破る名前ー
11.1 悪魔を呼び寄せる名前
11.2 名前を設計するー目的駆動名前設計
11.3 設計時の注意すべきリスク
11.4 意図がわからない名前
11.5 構造を歪ませてしまう名前
11.6 名前的に居場所が不自然なメソッド
11.7 名前の省略
●第12章 コメントー保守と変更の正確性を高める書き方ー
12.1 退化コメント
12.2 コメントで命名をごまかす
12.3 目的や仕様変更時の注意点を読み手に伝えること
12.4 コメントのルール まとめ
12.5 ドキュメントコメント
●第13章 メソッド(関数) ー良きクラスには良きメソッドありー
13.1 必ず自身のクラスのインスタンス変数を使うこと
13.2 不変をベースに予期せぬ動作を防ぐ関数にすること
13.3 尋ねるな、命じろ
13.4 コマンド・クエリ分離
13.5 引数
13.6 戻り値
●第14章 モデリングークラス設計の土台ー
14.1 邪悪な構造に陥りがちなUserクラス
14.2 モデリングの考え方とあるべき構造
14.3 良くないモデルの問題点と解決方法
14.4 機能性を左右するモデリング
●第15章 リファクタリングー既存コードを成長に導く技ー
15.1 リファクタリングの流れ
15.2 安全にリファクタリングする方法
15.3 あやふやな仕様を理解するための分析方法
15.4 IDE のリファクタリング機能
15.5 リファクタリングで注意すべきこと
●第16章 設計の意義と設計への向き合い方
16.1 本書はなんの設計について書いたものなのか
16.2 設計しないと開発生産性が低下する
16.3 ソフトウェアとエンジニアの成長性
16.4 課題を解決する
16.5 コードの良し悪しを判断する指標
16.6 コード分析をサポートする各種ツール
16.7 設計対象と費用対効果
16.8 時間を操る超能力者になろう
●第17章 設計を妨げる開発の進め方との戦い
17.1 コミュニケーション
17.2 設計
17.3 実装
17.4 レビュー
17.5 チームの設計力を高める
●第18章 設計技術の理解の深め方
18.1 さらにステップアップするための設計技術書紹介
18.2 設計スキルを高める学び方
■著者プロフィール
仙塲大也:X(旧Twitter)-ミノ駆動(@MinoDriven)。青森県出身。大手電機メーカーからWeb業界へ転身。アプリケーションアーキテクトとして、リファクタリングやアーキテクチャ改善、若手の設計スキル育成といった、設計全般を推進する業務に従事。悪しきコードとの戦いの中で設計の魅力に気付く。暇さえあれば脳内でリファクタリングしている。X(旧Twitter)ではプログラミングの風刺動画を不定期で投稿。登壇実績多数。Developers Summitではベストスピーカー賞など受賞多数。
商品レビュー
楽天Koboのレビュー
まだレビューがありません。 レビューを書く