15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

著者トークイベントから考える「良いコード/悪いコードで学ぶ設計入門」の読み方

Posted at

こちらの著者トークイベントに参加してまいりました

参加を踏まえて、どんな人にこの本がおすすめなのかを紹介します。
また、著者トークを踏まえたこの本の実務での使い方を紹介します。
※イベント内容はメモをとりながら視聴させていただきました。
誤解のない記載に努めましたが、
正確性に欠けた記載・著者が言っていない発言を書いてしまっている場合があります。
真に正確な内容につきましては、著者の書籍を是非お買い求めください。
(ちなみにNMRtは5/3から読み始める予定です!)
https://amzn.to/3ybPn4K

【イベント参加感想】

「読んでみたい!」と強く思うようになったきっかけは
「高凝集なカプセル化とイミュータブルを合わせた設計やモデリングを重視している」こと。
それらの技術を駆使して現場でリファクタリングを行なっていることから、書籍の購入を
先倒ししました。(イベント参加前はしばらく後で買う予定でした)

【対象読者】

・設計・特にアプリケーションアーキテクチャに興味がある人
(でもドメイン駆動設計やクリーンアーキテクチャは難しくて読めない!という人)
・新卒〜初級プログラマー
・中級プログラマー
・オライリー本等に「抽象論ばかりでわかりにくい!」という感想を持っている人
・オブジェクト指向を実務で使いたい人
・高凝集なカプセル化・イミュータブルな設計に興味がある人
・モデリングや技術選択について説明を受けたい人

【この本で著者が実現したいこと】

1)「エンジニアリングの当たり前を変える」
現代ではLinuxやGit、DockerやAWSなどはインフラエンジニアだけでなく
フロントエンジニアもある程度触れることが当たり前になっている。
そこに「変更容易性のある技術設計」という当たり前を追加したい。
また、リファクタリング反対勢をデータや設計の観点から論破したい。

2)ドツボにはまるパターンを数多く紹介すること
「悪いコード」は主に仕様変更の時に生まれる。
「悪いコード」に対しての再現性のある対処療法を紹介する。

【この本でわかること】

著者はこの本で以下の内容を提供しています。
①著者が経験した「悪いコード」を大量にサンプルとして掲載しました。
②設計の定義や理想状態がわかるように記載しました。
③上記の2つを知ることで「悪いコード」の正体がわかるようにしました。
これらがわかることによって、自分のコードが理想から外れた時に気づけるようになります。

また、中級者が初級者のコードレビューを行う際に、
「なぜあなたのコードはいけないのか?」を説明するサンプルとしての使用も考えています。
(サンプルコードを都度作成するのは時間がかかる。説明が中途半端に終わると急所が伝わらない。)

【この本でわからないこと】

・DBやHTML周りの設計に関すること
これらは対象外であると著者が発言しています。
(Web/ネイティブ)アプリケーションアーキテクチャに関する本と考えて良さそうです。

・完璧な設計
いわゆる「銀の弾丸」「これさえやっとけば大丈夫」は書いていないし、たぶんどの本にも書いてありません。
設計は「時間とコストのトレードオフ」であること。
この本で学んで欲しいのは、重視する方に適した設計を選択する「技術選択」力。

【各章の概要】

※メモが間に合わなかったので、覚えているところ、興味を持ったところだけ書いています。
ただイベントでも詳細な内容については触れていなかったと思います。

1、2)新人プログラマ向けの章
「設計しなければ」という意識を持たせる。
命名やメソッド設計のベースについて記載。

3)クラス設計
低凝集→高凝集なValueObjectの構築方法を記載。
ここが著者曰く「超重要」

4)不変の活用
安定動作するために不変を活用。

5)低凝集に陥りがちなパターンを紹介
対策方法を紹介。

6)分岐処理を解きほぐす
いわゆる「くそネスト」に対する批判?でしょうか(うろ覚え)
解決の鍵は「インターフェースの活用」

7)コレクションのネストを解決する
コレクション周りのロジックについて解説。

8)密結合について
単一責任の原則について説明。
責務とは何かを解説。

9)設計の健全性を損なう「悪魔」について解説

10)名前設計について解説
ロジック構造を導き出すための名前を設計することの重要性について解説。

11)コメント

12)メソッド

13)モデリング

14)リファクタリング

【オススメしたいと思ったポイント】

・プログラム入門→「この本」→「往年の設計関連の名著」
という感じにステップアップができそう。
・オブジェクト指向や設計関連の本で発売前から「1万部」売れた
つまり「設計重視」は今のトレンドでもある
・悪いコードは本当にコスパが悪い
これは私の今考えている思想です。
悪いコードのせいでAWSのインスタンスが無駄に何個も追加されたらどうなるか?
かなりAWSのコスパが悪くなってしまう。
→「良いコード」に導くマネジメント技術は今後武器になるのでは?
と思い、その答えが知りたいと思い購入しました。

GW後半から読み進めていきたいと思います!!
記事を読んでいただきありがとうございました。

こちらから「良いコード/悪いコードで学ぶ設計入門」を購入できます。
https://amzn.to/3ybPn4K

15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?