中堅Webエンジニアが語るクラス設計が大事な4つの理由

中堅Webエンジニアが語るクラス設計が大事な4つの理由

こんにちは。リーズナブルなSEOツールを作っているrevenue-hackです。

よかったらフォローしてくれると泣いて喜びます!

さて今日は中堅エンジニアの僕が7年間働いていて、設計が大事な理由を語りたいと思います。

結論から言うと

設計が悪いままプロダクト開発をするということは、重い重荷を持って目標に向かって歩いていることと同義です。

つまり設計によってコードの変更容易性があがり、プロダクトの開発スピードが上がります!

それについて説明していきます。

設計とは?

ここでの設計とはクラス設計を指しています。

クラス設計とはオブジェクト指向でクラスを分離し、そのクラスの関連性を設計することです。

例えばレイヤードアーキテクチャやクリーンアーキテクチャ、ヘキサゴナルアーキテクチャなどはクラス設計をする上でのやり方で有名な設計になります。

設計が大事な理由

では設計が大事な理由について説明していきます。

バグが起きにくい

先程結論に重い物を持ちながら歩いてくという表現をしましたが、まさにバグがその重りになるものでしょう。

設計が悪いと、自分のコードの変更が思わぬバグを生みます。

例えば全く同じドメインロジックをドメイン層だけじゃなく、ユースケース層に持っていた場合、

一箇所変えれば全部修正されると思ったエンジニアが一箇所だけしか変更しなかったら、

別の箇所では古いドメインロジックのままなので当然バグります。

こういうことが起こらないためにもちゃんとドメインロジックはドメインだけに閉じ込めておくというような設計が必要です。

コードをどこに書くのかチームで共通認識を持てる

チーム内で設計の共通認識を持っておくと誰が書いても、読んでもどこにコードが有るのか大体イメージできるようになるため、チーム内で設計の仕方を共通化しておくことはとても重要です。

例えば僕はいつもDDD+オニオンアーキテクチャで書くことが多いので、チーム内でDDDを共通認識としてコードを書きます。

世の中で有名な設計に従っておくと新しく入ったときや、他の人に伝える時に楽なのでオススメします。

コードレビューにかかる時間が減る

更にコードレビューにかかる時間が減ります。

コードレビューといえばコード量が多くなってくるとなかなか辛くなってくるものです。

設計は特に人の色が出やすいので、レビューする時にそれなりに時間がかかり、

ましてやコードを書いた後だと、最悪の場合書き直しなんてことに成りかねないです。

チーム内で設計の概念を共有しておくことで楽になります。

また共通認識を持っておくと、タスクごとにどのコードを変更するか予め分かるので、コンフリクトが起きにくい、分担しやすいという点もあります。

テストが書きやすい

最後にテストが書きやすくなります。

今どきテストがないWebサービスも徐々に少なくなってる。。。ことを祈りますが、テストはWeb開発でとても重要です。

テストを書きやすくするには一言でいうとクラスの依存度を減らすことが重要です。

例えばAがBに依存している場合、AのテストをするときはBも考慮したテストを書くか、

Bをモック化するしかないです。

なのでテストが書きやすいコード=設計がきれいなコードということが言えます。

例えばクリーンアーキテクチャはまさにテストを書きやすくするような設計になっています。

まとめ

設計の重要性について簡単に書きました。

設計は最初に言ったとおり

設計が悪いままプロダクト開発をするということは、重い重荷を持って目標に向かって歩いていることと同義。

コードを書く際はこれを思い出して実装していただければと思います。

最後に普段Twitterの重要性についてつぶやいていたりします、よければフォローしてくれると嬉しいです。

またmentaで設計などを教えてたります。

https://menta.work/user/21853

エンジニアリングカテゴリの最新記事