14
10

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 5 years have passed since last update.

疎結合とは何か

Last updated at Posted at 2020-02-11

疎結合とは何か?という話を最近軽く考えていたので、軽くメモる。

1)実装的に分離していること

メッセージ通信やDIによって分離している状態。

簡単に判別できるとしたら、単独でそのソースコードがコンパイルできること
実装的に分離できるのであれば、設計上は当然分離しているので、あえては言わない。

しかし、この条件からすると、他のクラスの管理下にあるプロトコル、インターフェイス、その他の抽象を装備してしまうと、疎結合度は下がるだろう。(密結合度が上昇)
https://qiita.com/BlueEventHorizon/items/211dc826e2e86ed8c8d2
のUML図を参照のこと。
先月博多で同じDIでも種類が違うぞ、この話を微妙に熱を込めて語ったのにはこんなわけもある。

2)責務が適切に分離されたインターフェイスが定義されていること。

実はこちらの方が大切で、インターフェイスが適切に定義されていれば、少々「実装的に分離していること」がダメでもなんとかなる。クソなインターフェイスを作ると死ぬのが定石。
あえては言わないが(言ってる・・・)この結果分離されたものをクラスとか関数とかいう。

世の偉いエンジニアの方達には違うと言われそうだが、SRP:単一責任の原則は基本的にはそういうことだと認識している。

https://qiita.com/BlueEventHorizon/items/a0144ef9ac20e587d288
参照のこと。

分析設計は、 MECE で考えられるというのもとても重要なスキルだと思う。というか、(大きく言えば)世の中を分析・設計するのがエンジニアリングであるので、当然考え方は似てくるだろう。

なので優秀なエンジニアは、優秀なデザイナーと同じく、世の中の問題を解決できる力がある(のかもしれない)

おわり

14
10
1

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
14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?