【レビュー】良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方


【PR】この記事には広告を含む場合があります
  • 出版情報
  • ・著者:仙塲大也/著
  • ・出版日:20220430
  • ・ページ数:400P
  • レビュー数
  • ・週間:0記事
  • ・月間:1記事
  • ・年間:17記事
  • ・全期間:38記事

ジャンルTop10選

目次

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 プログラム構造の問題解決に役立つ設計パターン
Column 種類の異なる言語と本書のノウハウ
4 不変の活用 ―安定動作を構築する―
4.1 再代入
4.2 可変がもたらす意図せぬ影響
4.3 不変と可変の取り扱い方針
5 低凝集 ―バラバラになったモノたち―
5.1 staticメソッドの誤用
5.2 初期化ロジックの分散
5.3 共通処理クラス(Common・Util)
5.4 結果を返すために引数を使わないこと
Column C#のoutキーワード
5.5 多すぎる引数
5.6 メソッドチェイン
6 条件分岐 ―迷宮化した分岐処理を解きほぐす技法―
6.1 条件分岐のネストによる可読性低下
6.2 switch文の重複
Column クソコード動画「switch文」
6.3 条件分岐の重複とネスト
6.4 型チェックで分岐しないこと
6.5 interfaceの使いこなしが中級者への第一歩
6.6 フラグ引数
7 コレクション ―ネストを解消する構造化技法―
7.1 わざわざ自前でコレクション処理を実装してしまう
Column 車輪の再発明
7.2 ループ処理中の条件分岐ネスト
7.3 低凝集なコレクション処理
8 密結合 ―絡まって解きほぐせない構造―
8.1 密結合と責務
Column クソコード動画「共通化の罠」
8.2 密結合の各種事例と対処方法
Column クソコード動画「継承」
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 意図がわからない名前
Column 技術駆動命名を用いる分野もある
10.5 構造を大きく歪ませてしまう名前
Column クソコード動画「Managerクラス」
10.6 名前的に居場所が不自然なメソッド
10.7 名前の省略
11 コメント ―保守と変更の正確性を高める書き方―
11.1 退化コメント
11.2 コメントで命名をごまかす
11.3 意図や仕様変更時の注意点を読み手に伝えること
11.4 コメントのルール まとめ
11.5 ドキュメントコメント
12 メソッド(関数) ―良きクラスには良きメソッドあり―
12.1 必ず自身のクラスのインスタンス変数を使うこと
12.2 不変をベースに予期せぬ動作を防ぐ関数にすること
12.3 尋ねるな、命じろ
Column クソコード動画「カプセル化」
12.4 コマンド・クエリ分離
12.5 引数
12.6 戻り値
Column メソッドの名前設計
Column staticメソッドの扱いに注意
13 モデリング ―クラス設計の土台―
13.1 邪悪な構造に陥りがちなUserクラス
13.2 モデリングの考え方とあるべき構造
13.3 良くないモデルの問題点と解決方法
Column クソコード動画「Userクラス」
13.4 機能性を左右するモデリング
14 リファクタリング ―既存コードを成長に導く技―
14.1 リファクタリングの流れ
14.2 ユニットテストでリファクタリングのミスを防ぐ
14.3 あやふやな仕様を理解するための分析方法
14.4 IDEのリファクタリング機能
14.5 リファクタリングで注意すべきこと
Column Railsアプリのリファクタリング
15 設計の意義と設計への向き合い方
15.1 本書はなんの設計について書いたものなのか
15.2 設計しないと開発生産性が低下する
15.3 ソフトウェアとエンジニアの成長性
15.4 課題を解決する
15.5 コードの良し悪しを判断する指標
Column クラスを分割すると読みにくくなる?
15.6 コード分析をサポートする各種ツール
Column シンタックスハイライトを品質可視化に利用する
15.7 設計対象と費用対効果
15.8 時間を操る超能力者になろう
16 設計を妨げる開発プロセスとの戦い
16.1 コミュニケーション
16.2 設計
16.3 実装
16.4 レビュー
16.5 チームの設計力を高める
17 設計技術の理解の深め方
17.1 さらにステップアップするための設計技術書紹介
Column バグ退治RPG『バグハンター2 REBOOT』
17.2 設計スキルを高める学び方
Column C#と長き旅、そして設計への道

概要

本書は、より成長させやすいコードの書き方と設計を学ぶ入門書です。

システム開発では、ソフトウェアの変更が難しくなる事態が頻発します。
コードの可読性が低く調査に時間がかかる、
コードの影響範囲が不明で変更すると動かなくなる、
新機能を追加したいがどこに実装すればいいかわからない……。

変更しづらいコードは、成長できないコードです。
ビジネスの進化への追随や、機能の改善が難しくなります。

成長できないコードの問題を、設計で解決します。

レビューの一覧

 ・果たして自分の書いているコードは読みやすいか[2024-03-27に投稿]

 ・新卒1年目のしくじりエンジニア。俺にみたいにはなるな!! 〜アンチパターン実装編〜[2024-01-27に投稿]

 ・【バックエンド】駆け出しエンジニアが目指すジュニアレベルのエンジニアとは【2024年版】[2024-01-04に投稿]

 ・【2024年版】フロントエンドに求められるミドルレベルのエンジニアと達成する為にすべきこととは[2024-01-03に投稿]

 ・【11万文字越え】プログラミング初心者に贈る即戦力ガイド[2023-12-14に投稿]

 ・未経験からWebエンジニアになった1年目に読んだ本19冊をふりかえる[2023-12-10に投稿]

 ・ドメインモデル貧血症ってなあに?肉食えば治るの?と思った私がドメインモデル貧血症について調べてみた[2023-12-05に投稿]

 ・[備忘録] 設計入門を20ページほど読んで早速アウトプットしてみた[2023-11-16に投稿]

 ・エンジニアに読んで欲しい技術書90選[2023-10-30に投稿]

 ・Web業界1年目が「良いコード/悪いコードで学ぶ設計入門」を読んだ感想[2023-09-22に投稿]

 ・条件分岐について(ネストの解消)[2023-06-28に投稿]

 ・ゲーム制作するUnityエンジニアのオススメ本[2023-05-26に投稿]

 ・読みやすいコードとは【備忘録】[2023-04-14に投稿]

 ・【出力引数】引数を出力値として扱ってはいけない[2023-04-13に投稿]

 ・良いコード/悪いコードで学ぶ設計入門 の急所をpythonで解釈[2023-04-02に投稿]

 ・良いコード悪いコードで学ぶ設計入門 【1~3章】 まとめ[2023-03-27に投稿]

 ・インフラエンジニア1年生がプログラミングを勉強するのに使った教材[2023-03-14に投稿]

 ・ルール判定の辛みを解消するポリシーパターン[2023-03-08に投稿]

 ・ストラテジーパターンをJavaで実装する[2023-03-08に投稿]

 ・達人プログラマーを読んで[2023-03-05に投稿]

 ・【Unity(C#)】「良いコード/悪いコードで学ぶ設計入門」を読んだので自分の記事のコードをリファクタしてみた[2023-01-25に投稿]

 ・今年読んだ書籍の読書記録【2022年版】[2022-12-31に投稿]

 ・塵も積もれば山となる ー 誰でもすぐにできるコード改善Tips![2022-12-06に投稿]

 ・【随時更新】AWS Dev Day 2022 Japan スライドまとめ[2022-11-10に投稿]

 ・「良いコード、悪いコード 」& 「リーダブルコード」の個人的まとめ[2022-10-08に投稿]

 ・【Ruby】麻雀の点棒を値オブジェクトにしてみた🀄️[2022-10-03に投稿]

 ・未経験Androidエンジニアの1年を振り返る[2022-09-08に投稿]

 ・低凝集な構造を知り、設計について見直す[2022-09-06に投稿]

 ・易しい言葉でめった刺しされる一冊に出会った[2022-08-29に投稿]

 ・【HTML & JavaScript & CSS】夏休みの自由研究的な感じでシューティングゲーム作ってみた。[2022-08-21に投稿]

 ・良いコード/悪いコードで学ぶ設計入門がステップアップに最適だった[2022-07-09に投稿]

 ・34歳未経験でWebエンジニアに転職した話(受託開発・地方都市・週3〜4リモート)[2022-06-29に投稿]

 ・新米エンジニアによるリファクタリングのすすめ-後編-[2022-06-24に投稿]

 ・書籍要約 「良いコード/悪いコードで学ぶ設計入門 」[2022-06-22に投稿]

 ・ストラテジーパターンって何?[2022-05-14に投稿]

 ・Elm patternsを翻訳してみた[2022-05-09に投稿]

 ・オブジェクト指向を意識した設計ができるようになった気がした - 良いコード/悪いコードで学ぶ設計入門を読んだ感想 - [2022-05-04に投稿]

 ・「良いコード/悪いコードで学ぶ設計入門」はSNS時代の冒険活劇ゲーム攻略本だと思った[2022-05-02に投稿]


amazonで確認