3,278円(税込)送料無料
この商品が関連するクーポン・キャンペーンがあります(10件)開催中のキャンペーンをもっと見る
※エントリー必要の有無や実施期間等の各種詳細条件は、必ず各説明頁でご確認ください。
良いコードが書けるようになる、ソフトウェア設計の入門書
「ITエンジニア本大賞2023」技術書部門で大賞受賞!
本書は、より成長させやすいコードの書き方と設計を学ぶ入門書です。
システム開発では、ソフトウェアの変更が難しくなる事態が頻発します。
コードの可読性が低く調査に時間がかかる、
コードの影響範囲が不明で変更すると動かなくなる、
新機能を追加したいがどこに実装すればいいかわからない……。
変更しづらいコードは、成長できないコードです。
ビジネスの進化への追随や、機能の改善が難しくなります。
成長できないコードの問題を、設計で解決します。
(こんな方におすすめ)
・ コードの設計スキルに興味がある人
・ 日々、悪いコードと向き合っていて改善したい人
・より良いコードを書きたい人
(目次)
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 staticメソッドの誤用
5.2 初期化ロジックの分散
5.3 共通処理クラス(Common・Util)
5.4 結果を返すために引数を使わないこと
5.5 多すぎる引数
5.6 メソッドチェイン
6 条件分岐 -迷宮化した分岐処理を解きほぐす技法ー
6.1 条件分岐のネストによる可読性低下
6.2 switch文の重複
6.3 条件分岐の重複とネスト
6.4 型チェックで分岐しないこと
6.5 interfaceの使いこなしが中級者への第一歩
6.6 フラグ引数
7 コレクション -ネストを解消する構造化技法ー
7.1 わざわざ自前でコレクション処理を実装してしまう 7.2 ループ処理中の条件分岐ネスト
7.3 低凝集なコレクション処理
8 密結合 -絡まって解きほぐせない構造ー
8.1 密結合と責務
8.2 密結合の各種事例と対処方法
9 設計の健全性をそこなうさまざまな悪魔たち
9.1 デッドコード
9.2 YAGNI原則
9.3 マジックナンバー
9.4 文字列型執着
9.5 グローバル変数
9.6 null問題
9.7 例外の握り潰し
9.8 設計秩序を破壊するメタプログラミング
9.9 技術駆動パッケージング
9.10 サンプルコードのコピペ
9.11 銀の弾丸
10 名前設計 -あるべき構造を見破る名前ー
10.1 悪魔を呼び寄せる名前
10.2 名前を設計するー目的駆動名前設計
10.3 設計時の注意すべきリスク
10.4 意図がわからない名前
10.5 構造を大きく歪ませてしまう名前
10.6 名前的に居場所が不自然なメソッド
10.7 名前の省略
11 コメント -保守と変更の正確性を高める書き方ー
11.1 退化コメント
11.2 コメントで命名をごまかす
11.3 意図や仕様変更時の注意点を読み手に伝えること
11.4 コメントのルール まとめ
11.5 ドキュメントコメント
12 メソッド(関数) -良きクラスには良きメソッドありー
12.1 必ず自身のクラスのインスタンス変数を使うこと
12.2 不変をベースに予期せぬ動作を防ぐ関数にすること
12.3 尋ねるな、命じろ
12.4 コマンド・クエリ分離
12.5 引数
12.6 戻り値
13 モデリング -クラス設計の土台ー
13.1 邪悪な構造に陥りがちなUserクラス
13.2 モデリングの考え方とあるべき構造
13.3 良くないモデルの問題点と解決方法
13.4 機能性を左右するモデリング
14 リファクタリング -既存コードを成長に導く技ー
14.1 リファクタリングの流れ
14.2 ユニットテストでリファクタリングのミスを防ぐ
14.3 あやふやな仕様を理解するための分析方法
14.4 IDEのリファクタリング機能
14.5 リファクタリングで注意すべきこと
15 設計の意義と設計への向き合い方
15.1 本書はなんの設計について書いたものなのか
15.2 設計しないと開発生産性が低下する
15.3 ソフトウェアとエンジニアの成長性
15.4 課題を解決する
15.5 コードの良し悪しを判断する指標
15.6 コード分析をサポートする各種ツール
15.7 設計対象と費用対効果
15.8 時間を操る超能力者になろう
16 設計を妨げる開発プロセスとの戦い
16.1 コミュニケーション
16.2 設計
16.3 実装
16.4 レビュー
16.5 チームの設計力を高める
17 設計技術の理解の深め方
17.1 さらにステップアップするための設計技術書紹介
17.2 設計スキルを高める学び方
本書は、より成長させやすいコードの書き方と設計を学ぶ入門書です。システム開発では、ソフトウェアの変更が難しくなる事態が頻発します。コードの可読性が低く調査に時間がかかる、コードの影響範囲が不明で変更すると動かなくなる、新機能を追加したいがどこに実装すればいいかわからない…。変更しづらいコードは、成長できないコードです。ビジネスの進化への追随や、機能の改善が難しくなります。成長できないコードの問題を、設計で解決します。
悪しき構造の弊害を知覚する/設計の初歩/クラス設計ーすべてにつながる設計の基盤/不変の活用ー安定動作を構築する/低凝集ーバラバラになったモノたち/条件分岐ー迷宮化した分岐処理を解きほぐす技法/コレクションーネストを解消する構造化技法/密結合ー絡まって解きほぐせない構造/設計の健全性をそこなうさまざまな悪魔たち/名前設計ーあるべき構造を見破る名前/コメントー保守と変更の正確性を高める書き方/メソッド(関数)-良きクラスには良きメソッドあり/モデリングークラス設計の土台/リファクタリングー既存コードを成長に導く技/設計の意義と設計への向き合い方/設計を妨げる開発プロセスとの戦い/設計技術の理解の深め方
仙塲大也(センバダイヤ)
青森県出身。大手電機メーカーなどを経て、現在はREADYFOR株式会社にてアプリケーションアーキテクトを務める。リファクタリングや設計全般を推進。悪しきコードとの戦いの中で設計の魅力に気付く。暇さえあれば脳内でリファクタリングしている。Twitterではプログラミングの風刺動画を不定期で投稿。Developers Summit 2021 Summerベストスピーカー賞3位。その他登壇多数(本データはこの書籍が刊行された当時に掲載されていたものです)
この本はプログラムが書けない人の入門書では有りません。今まで書いてきたけど、その後のメンテで変更と拡張に対応しにくいと感じるならお薦めの一冊です。
具体的なコードが載ってるので理解しやすく、一度でも爆散したプロジェクトの修正に駆り出された事が有るなら何度も頷いてしまう内容でした。Javaを用いた解説なのでClass型オブジェクト指向特有の解法も有りますが、普遍的に良いコードや考え方が網羅されてると思います。私は普段関数型の特徴を取り入れたClassが無い言語を書いていますが、本書が全く通じない事はなく自分が使ってる言語に上手く落とし込める部分も多いと思います。
0人が参考になったと回答
名付けやモデリングが上手くできている気がせず、他の著書など読んでもピンと来なかったが、この本ではっきり答えが書かれており腹落ちした。
オブジェクト指向の解説本としてかなり分かりやすいと思った。今後、改めて低凝集にならないように心がけて開発していきたい。
間違いなく良い本だと思うんですが、実例のプログラム言語の畑がかなり違ったのであまりイメージできませんでした
・デフォルトでは変数はイミュータブルとする
・高凝集とはデータとロジックが結びついている状態
・概念的に異なるものはクラス化しプリミティブ型執着を避ける
・インターフェースを使ったストラテジーパターンでSwitch文クローン問題を回避する
・共通処理があっても概念的に異なるものは独立してクラス化して疎結合にする
・フールプルーフの観点から継承は使わず移譲(メンバーにスーパークラスを持つ)を使うコンポジション設計にする
・コレクションに性質がある場合はクラス化する(ファーストクラスコレクション)
・肥大化したデータクラスはグローバル変数と似た性質を持つため避ける
・フォルダ構成は技術駆動ではなくビジネス概念で分ける
・ユビキタス言語や利用規約を活用し、存在ベースではなく目的ベースで名前設計する
・モデリングではシステム内での登場人物の目的で分解して設計する
・レビューでは敬意を示す
ストラテジーパターンが具体的にイメージしづらかったため、アウトプットしたい。
本:第-位( - ) > パソコン・システム開発:第952位(↑) > その他:第828位(↑)
ランキング情報がありません。
※1時間ごとに更新
1,320円(税込)
高橋 京介
1,793円(税込)
岡嶋裕史
1,738円(税込)
ユヴァル・ノア・ハラリ
2,200円(税込)
ユヴァル・ノア・ハラリ
2,200円(税込)