![見出し画像](https://assets.st-note.com/production/uploads/images/110169135/rectangle_large_type_2_4fe7108bee88aaee3b217c12483a98d7.jpeg?width=1200)
「オブジェクト設計スタイルガイド」という書籍を翻訳しました
こんにちは、田中裕一です。今回、Matthias Nobackさんが書かれた「Object Design Style Guide」という書籍の日本語訳を「オブジェクト設計スタイルガイド」としてオライリー・ジャパンにて出版します。
本日、7月7日が発売日です!ぜひ一読いただけると嬉しいです。
どういった本か
書籍タイトルに含まれている「スタイルガイド」というのは聞きなれない言葉かもしれません。これについては前書きで触れられています:
"AP Stylebook"(APスタイルブック)や"The Chicago Manual of Style"(シカゴ・マニュアル・オブ・スタイル)など、ジャーナリストがよく使うスタイルガイドをご存じでしょうか。こう言った本と同様に、本書は大きなチーム全体で明確で一貫したスタイルを達成するためのガイドラインとガイダンスを提供します。
こういったスタイルガイドというアイデアをオブジェクト設計に適用し、「オブジェクト設計の品質を高める上で、さまざまなドメインやプロジェクトで適用できるようなコードレベルのルール」を提案する、というのが本書の目的です。
どういったスタイルが提案されているのか
1つのスタイルに関するルールごとに、1つの節が割り当てられているので、目次をみると具体的にどう言ったルールが書かれているのかがおおよそわかるかと思います。
例として、サービスオブジェクトについて書かれた第2章の目次から、節を引用してみます。
2章 サービスの作成
2.1 2種類のオブジェクト
2.2 依存関係や設定値をコンストラクタ引数として渡す
2.3 サービスロケータを注入するのではなく、必要なもの自体を注入する 2.4 すべてのコンストラクタ引数を必須とする
2.5 コンストラクタ引数による注入のみを使う
2.6 省略可能な依存関係というものは存在しない
2.7 すべての依存関係を明示する
2.8 タスクに関連するデータはコンストラクタ引数ではなくメソッド引数として渡す
2.9 サービスをインスタンス化した後にそのサービスの振る舞いを変更しない
2.10 コンストラクタの中ではプロパティへの代入以外は何もしない
2.11 引数が無効な場合には例外を投げる
2.12 サービスは少数のエントリポイントを持つイミュータブルなオブジェクトグラフとして定義する
2.13 まとめ
2.14 練習問題の解答
こういったルールに従うことによって
コンストラクタを見るだけで、依存関係が明白である
振る舞いが一貫しているため、さまざまな場所から再利用しても問題ない
という特性を持つサービスオブジェクトを設計できるようになります。オブジェクトの種類ごとに、こういったルールがなぜ必要なのかについて具体的なサンプルコードを通して説明されており、理解しやすい内容になっていると思います。
おわりに
ぜひ目次をご覧いただいて、面白いと思ったら手に取っていただけると嬉しいです。そして、本書の内容が良いと思ったら、みなさんのチームとしてどういったルールを採用していくのか議論したり、実際のコードに対してルールを適用してより良い設計を生み出せるかどうかを試してみてください。
少しでも本書が皆さんの組織やエンジニアライフをより良いものにする役に立てば幸いです。
この記事が気に入ったらサポートをしてみませんか?