おはこんばんちは、@ちーずです。
本日のテーマは、「設計用語」に関してですが、
正直設計用語ってドキュメント読んでもいまいちパッとこなかったりしますよね。
そのような人にもなるべくわかりやすいよう「例え話」を添えて説明いたします。
単一責任の原則
単一責任の原則とは、SOLID原則の1つであり
「一つのモジュール(関数やクラス)は、一つの責任だけを持つべき」という原則です。
Reactでは、コンポーネントやhooksの責務を考える上で、非常に重要な考え方です。
「ハイボールを作る」処理があったと仮定して考えてみましょう。
図の左側の処理A
は、
- ウイスキーを入れる
- 炭酸水を入れる
という複数の責任を持っており、この処理はハイボールを作る時にしか使えません。
一方で、図の右側のように1つの処理に対して一つの責任しか持たないように実装した場合、
- 処理B は ウイスキーを入れる
- 処理C は 炭酸水を入れる
ウイスキーロックを作る時に処理B
が使えますし、
処理C
なんて、レモンサワーや果実酒サワーなど、いろんなお酒を作る時に大活躍できます。
また、仮に「ウイスキーが腐った!」というバグが発生したとしても、
「発生要因がウイスキーである」ことが発見しやすい、というメリットもあります。
.....ウイスキーって腐るんですかね。
メリットまとめ
- 汎用的に扱うことができる
- 他の無関係な動作に影響を与えないようにできる
- 単体テストが書きやすい
▼ 参考
関心の分離(Separation of Concerns)
関心の分離とは、「異なる関心ごとは、異なる部分に分離する」という考え方です。
Componentの命名やレイヤー分けなどに対して良く使われます。
- 見た目
- ビジネスロジック
これらを分離することも「関心の分離」です。
この考え方も関心の分離...?
先輩からよく 「Componentやhooksは無責任に振る舞え」と指摘されるのですが、
それも「関心の分離」に含まれるのでは?と考えております。
例えば、「数学のノートを取る」という処理があったとします。
A子はAくんが好きで、Aくんのためだけに数学のノートを書いたとしましょう。
そうすると、自分やAくん以外の人には適応できない数学のノートが完成するわけです。
一方B子は、「数学のノートを取る」ことだけをしたため、誰が見てもわかるノートが完成するわけです。
「数学のノートを取る」という行為に対して、Aくんのためであるなんて知ったこっちゃないわけです。
そのため、「Aくんのために〇〇する」行為と「数学のノートを取る」行為は分離させる必要があります。
▼ 参考
分割統治法
分割統治法とは、大きな問題を小さく分割して解決していく手法のことです。
小さく分割することで、影響の範囲を限定していくことができます。
例えば、「部屋の電気がつかない」という問題が発生したとしましょう。
その問題だけ聞くと、非常に大きい問題に聞こえますね。
それでは小さく分割していきましょう。
- 電気代を払っているか
- 部屋の電球に異常がないか
- ブレーカーは上がっているか
そして、それぞれの異常をチェックすれば、原因が特定できるわけです。
DRYの原則
DRYは「don’t repeat yourself」の略であり、
重複することをなるべく避けるべきとする考え方です。
...シンプルすぎて例え話もいらなさそうですね。笑