內聚與耦合(一) 概要篇 | Cohesion and Coupling

對於高內聚一知半解的結果
情境
以下情境純屬虛構,如有雷同,實屬巧合
在某個辦公室,有以下對話
小王:不是,都說要追求高內聚的程式,我這不是一個高內聚的類別嗎?
小明:亂講!你這個也做太多事了吧!哪裡高內聚!
小王:我看你是不懂高內聚,高內聚就是要一個模塊可以獨立做到一件事,我這是...
通常這種對話會沒個結果,因為內聚與耦合是個模糊的東西嗎?
內聚與耦合 | Coupling And Cohesion
“ Fools rush in where angels fear to tread. ”
很多時候,高內聚與低耦合會變成大家都會拿來批鬥的武器,無論是當面對決還是對離職的前輩輸出。高內聚與低耦合好像有天生神聖性,所有人都不清楚他是什麼,但它就是一個真理,所以大家都能拿出來說個幾句。
這麼說高內聚與低耦合好像只是拿來對決的武器,不能落實到實際的程式碼一樣,那還讀下去幹嘛 ? 那我先看其他文章好了。
不好把握的模糊概念或許是因為其歷史悠久,每個人都有自己的定義,那如果我們回到那個夢開始的地方呢 ?
簡史
內聚與耦合的概念由 Larry Constantine 在 1968 年提出,並在後續的 Structured Design: Fundamentals of a Discipline of Computer Program and System Design 進行進一步的衡量方式與分類。
該概念主要是針對模組化、結構化程式的一種描述。本篇也會透過這個基礎下去解釋。
分類
在書中,將內聚與耦合依照程度分成以下幾種。
內聚的分類,以下按照高內聚到低內聚排序- 功能內聚力 (Functional Cohesion)
- 循序內聚力 (Sequential Cohesion)
- 溝通內聚力 (Communication Cohesion)
- 程序內聚力 (Procedural Cohesion)
- 暫時內聚力 (Temporal Cohesion)
- 邏輯內聚力 (Logical Cohesion)
- 偶發內聚力 (Coincidental Cohesion)
- 無耦合
- 資料耦合力 (Data Coupling)
- 類型耦合力 (Stamp Coupling)
- 控制耦合力 (Control Coupling)
- 共同耦合力 (Common Coupling)
- 內容耦合力 (Content Coupling)
作者心得
下一篇將會從內聚先做解釋,再解釋進而耦合,最後是總結與心得,總共四篇
倒數最後兩集了,真沒想到咒術迴戰倒數第三集竟然是批鬥大會,然後還是把 MVP 拖出來鞭,真是小母牛坐火箭...