新刊ピックアップ
7つのリニューアル!『改訂新版 良いコード/悪いコードで学ぶ設計入門』
こんにちは,
改訂新版 良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方
本書は,より成長させやすいコードの書き方と設計を学ぶ入門書です。筆者の経験をふまえ構成や解説内容を見直し,より実践的な一冊になりました。 システ...
なるべくバグを発生させず,
変更容易性の設計ノウハウに関する技術書は数多くありますが,
そうした課題を解消するのが本書です。
豊富な
本書初版は大変多くの方に手に取っていただきました。そのおかげもあって,
私のさまざまな知見のアップデートを経て,
【変更】 凝集度,結合度からカプセル化, 関心の分離へ 【加筆】 インターフェースと実装の分離【変更】 interfaceの解説を改善【加筆】 インターフェースと実装の分離にもとづいたinterface設計【加筆】 アンカリング効果【加筆】 ジョシュアツリーの法則【加筆】 説明による設計スキルアップ
順番に説明します。
【変更】凝集度,結合度からカプセル化,関心の分離へ
「凝集度」
凝集度,
理由を説明します。
凝集度は,
初版では,
まず凝集度についてです。
凝集度で最も品質が高い構造は
しかし凝集度が高い構造であっても,
// 金額を表現するクラス
class Money {
int amount; // 金額値
Currency currency; // 通貨単位
}
class Util {
// このaddメソッドは機能的凝集の構造
// しかしMoneyクラスに定義されていないので変更容易性は低い
static Money add(Money money1, Money money2) {
if (!money1.currency.equals(money2.currency)) {
throw new IllegalArgumentException("通貨単位が違います。");
}
Money added = new Money();
added.amount = money1.amount + money2.amount;
added.currency = money1.currency;
return added;
}
}
Util
クラスのadd
メソッドは機能的凝集の構造です。
しかし,Money
クラスのインスタンス変数と,
結合度についても,
ドメイン駆動設計で用いられる
このように,
結合度を下げて品質を高めることだけに注目し杓子定規に依存関係を減らしてしまうと,
前述の通り,
本書で解説している
初版では,
カプセル化とは,
関心の分離とは,
- 強く関係するものどうしをカプセル化する。
- 関係の弱いものどうしを分離する。
この観点で見直すと,
初版において,
【加筆】インターフェースと実装の分離
関心の分離に関してテクニックを追加しました。
一連の処理手順が長く書き連ねられている構造をトランザクションスクリプトパターンと呼びます。
トランザクションスクリプトパターンのメソッドは,
この問題を解決する有用なテクニックとして,
インターフェースと実装の分離とは,
インターフェースと実装の分離に基づいて設計することで,
トランザクションスクリプトパターンにお困りの方は多いでしょう。構造改善に有用なテクニックなので,
【変更】interfaceの解説を改善
interfaceはJavaなどが備える多態性を実現するしくみのひとつです。
interfaceを使うと,
しかし,
そこで,
「interfaceを使って機能を取り換える」
【加筆】インターフェースと実装の分離にもとづいたinterface設計
interfaceを使いこなせるようになるには,
しかしどうすればinterfaceをうまく設計できるでしょうか。
interfaceの設計でも有用なのが,
interface設計で押さえるべきポイント,
【加筆】アンカリング効果
クラスやメソッドへの命名は,
一方で,
こうした命名のテクニックを,
名前設計においてはさまざまなテクニックを解説していますが,
そのひとつがアンカリング効果です。
アンカリング効果とは,
アンカリング効果は命名でも生じます。思い込みに縛られて,
アンカリング効果から抜け出し,
【加筆】ジョシュアツリーの法則
名前設計に関しては,
ジョシュアツリーの法則とは,
ジョシュアツリーの法則を踏まえた設計の進め方について加筆しました。
【加筆】説明による設計スキルアップ
設計スキルを効率的にすばやく身につけるにはどうすればいいのか,
このコンテンツに,
人に説明すると,
本書を片手に快適な開発を目指そう
以上が主な変更点です。
ほかにも説明不足だった箇所の補足や細かな表現の修正を行い,
パワーアップした本書をぜひ手にとってください。そしてバグに苦しめられず,
記事中で紹介した書籍
-
改訂新版 良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方
本書は,より成長させやすいコードの書き方と設計を学ぶ入門書です。筆者の経験をふまえ構成や解説内容を見直し,より実践的な一冊になりました。 システム開発では...