💔

密結合って何がダメ?早く別れるカップルから見る密結合のデメリット💔【大真面目】

に公開

🔥 はじめに

エンジニアでも恋がしたい!!
中二病でも恋がしたい!
画像: BANDAI CHANNELさんより引用🙇

どうも、最近彼女と別れこのままでは生涯独身男性、まえくんです😇

カップルを見ていて思うことありません?
「あのカップル付き合いたてなのに、仲良くて羨ましいなぁ...」
って。

反面、そういうカップルは
「すぐ別れそうwww」
とかも言われたりしますよね?

それ、、、エンジニア的には

密結合

だからなんです!笑

🎯 ゴール

  • カップルの関係性を例に「密結合」のメリデリを知る
  • 恋愛、というテーマでわかりやすく「密結合」を知る(笑)

😕 密結合とは?

ソースコードでいうと「AクラスがBクラスの内部実装にベッタリ依存している」状態。
カップルに例えるなら「相手のスマホのパスコード知ってる」「毎日一緒にいないと無理!」みたいな感じ。

class Girlfriend {
  String mood = "happy";
}

class Boyfriend {
  final Girlfriend gf;
  Boyfriend(this.gf);

  void cheerUp() {
    // 内部実装に依存 → gfの状態にべったり
    gf.mood = "happy";
  }
}

上記の例では、Boyfriend が Girlfriend の mood に直アクセスしています。
→ 彼氏のテンションが彼女に依存しているカップルです。

これってつまり、
彼女の mood が "happy" なら彼氏も幸せ。
でも "angry" に変わった瞬間...バグ発生(関係クラッシュ)💥

実際のコードでも同じで、依存先がちょっと変わると全部巻き添えになります。

...🧐
彼氏のテンションが彼女に左右されてしまう。
楽しい時はいいんですけどね。
Girlfreinedクラスのmoodがangryやsadの場合は...
考えたくもないですね😇

✅ 密結合のメリット

密結合 = 最初から仲良しが悪い、と言っているみたいですが、もちろんメリットもあります!!

  • 初速が速い: コード量少なくすぐ動く → カップルなら「すぐ仲良し!」
  • 一体感が強い: 相手のこと全部わかる → まるでprivateまで知ってるレベル
  • 将来が確定: 今後のビジネスロジック変更がない → 将来が確実なら問題なし!
  • PoC向き: プロトタイプ開発や、恋愛の最初の盛り上がりフェーズには相性良い

❌ 密結合のデメリット

とはいえ...将来何が起こるかわからないのが、人生とプログラミングです。

  • 片方が変わると全部壊れる
    • class Girlfriend {
          String feeling = "happy"; // mood → feeling にリネーム
      }
      
      → これだけでBoyfriendはコンパイルエラー。
      → 「引っ越しを機に破局」みたいなやつ。
  • テストしにくい
    • Boyfriend をテストするには、必ず Girlfriend が必要。
    • 疑似的にモックを作るのも大変。
  • リファクタ困難
    • 「ちょっと整理したい」だけで関係が爆発する。
    • コードも恋愛も、縛りが強いと柔軟に動けなくなる。

💐 疎結合カップルのススメ

解決策は「インターフェース(契約)」を設けること。
つまり「ここまではお互い責任を持つけど、中身は自由でいいよ」を決めておく。

abstract class Partner {
  void cheerUp();
}

class Girlfriend implements Partner {
  
  void cheerUp() => print("笑顔になった😊");
}

class Boyfriend {
  final Partner partner;
  Boyfriend(this.partner);

  void makeHappy() {
    partner.cheerUp(); // 中身は知らなくていい
  }
}

これなら、

  • 彼女が Girlfriend でも
  • 未来に Wife でも🥰
  • なんなら PetDog でも

Partner を実装していれば問題なし。

恋愛で言えば、

  • 「コミュニケーションは最低1日1回」(LINEでも電話でも)
  • 「週末はどちらかがデートプラン考える」

みたいな契約を決めておくイメージです。

🗒️ まとめ

  • 密結合 = 付き合いたてで超仲良しカップル。速いけど壊れやすい。
  • 疎結合 = お互いの境界を大事にしたカップル。安定して長持ち。
  • エンジニアも恋愛も、契約(インターフェース)の粒度設計が大事!

最後まで見ていただいた、そこのエンジニアさん。
コードも恋愛も密結合になっていませんか......?

⚠️ あくまでもエンジニア視点での考えです!こと、恋愛において初速が速いから悪いということはありません。

...なるほど、エンジニアってだから多分モテないんだろうな。

終

Discussion