<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] # 高內聚、低耦合 起因:耦合性與內聚性是模塊獨立性的兩個定性度量標準,將軟件系統劃分模塊時,每個模塊只完成系統要求的獨立子功能,并且與其他模塊的聯系最少且接口簡單,提高模塊的獨立性,為設計高質量的軟件結構奠定基礎。 內聚:一個模塊內各個元素彼此結合的緊密程度。 耦合:一個軟件結構內不同模塊之間互連程度的度量。 (耦合性也叫塊間聯系。指軟件系統結構中個模塊間相互聯系緊密程度的一種度量。 模塊之間聯系越緊密,其耦合性就越強,模塊的獨立性則越差,模塊間耦合的高低取決于模塊間接口的復雜性,調用的方式以及傳遞的信息。) ## 低耦合,粗淺的理解 耦合性也稱塊間聯系。指軟件系統結構中各模塊間相互聯系緊密程度的一種度量。模塊之間聯系越緊密,其耦合性就越強,模塊的獨立性則越差。模塊間耦合高低取決于模塊間接口的復雜性、調用的方式及傳遞的信息。 也就是說,讓每個模塊,盡可能的獨立完成某個特定的子功能。 模塊與模塊之間的接口,盡量的少而簡單。 如果某兩個模塊間的關系比較復雜的話,最好首先考慮進一步的模塊劃分。 這樣有利于修改和組合。 ## 高內聚,粗淺的理解 內聚性又稱塊內聯系。指模塊的功能強度的度量,即一個模塊內部各個元素彼此結合的緊密程度的度量。若一個模塊內各元素(語名之間、程序段之間)聯系的越緊密,則它的內聚性就越高。 也就是充分利用每一個元素的功能,各施所能,以最終實現某個功能。 如果某個元素與該模塊的關系比較疏松的話,可能該模塊的結構還不夠完善,或者是該元素是多余的。 ## 分類 ### 耦合性分類(低――高) 1. 無直接耦合: 2. 數據耦合: 指兩個模塊之間有調用關系,傳遞的是簡單的數據值,相當于高級語言的值傳遞; 3. 標記耦合: 指兩個模塊之間傳遞的是數據結構,如高級語言中的數組名、記錄名、文件名等這些名字即標記,其實傳遞的是這個數據結構的地址; 4. 控制耦合: 指一個模塊調用另一個模塊時,傳遞的是控制變量(如開關、標志等),被調模塊通過該控制變量的值有選擇地執行塊內某一功能; 5. 公共耦合: 指通過一個公共數據環境相互作用的那些模塊間的耦合。公共耦合的復雜程序隨耦合模塊的個數增加而增加。 6. 內容耦合: 這是最高程度的耦合,也是最差的耦合。當一個模塊直接使用另一個模塊的內部數據,或通過非正常入口而轉入另一個模塊內部。 ### 內聚性分類(低――高) 1. 偶然內聚: 指一個模塊內的各處理元素之間沒有任何聯系。 2. 邏輯內聚: 指模塊內執行幾個邏輯上相似的功能,通過參數確定該模塊完成哪一個功能。 3. 時間內聚: 把需要同時執行的動作組合在一起形成的模塊為時間內聚模塊。 4. 通信內聚: 指模塊內所有處理元素都在同一個數據結構上操作(有時稱之為信息內聚),或者指各處理使用相同的輸入數據或者產生相同的輸出數據。 5. 順序內聚: 指一個模塊中各個處理元素都密切相關于同一功能且必須順序執行,前一功能元素輸出就是下一功能元素的輸入。 6. 功能內聚: 這是最強的內聚,指模塊內所有元素共同完成一個功能,缺一不可。與其他模塊的耦合是最弱的。 ## 如何做到高內聚、低耦合 內聚和耦合,包含了橫向和縱向的關系。**功能內聚和數據耦合,是我們需要達成的目標**。橫向的內聚和耦合,通常體現在系統的各個模塊、類之間的關系,而縱向的耦合,體現在系統的各個層次之間的關系。 對于我在編碼中的困惑,我是這樣想的,用面向對象的思想去考慮一個類的封裝。 一個方法,如何封裝,拿到現實生活中來看,看這種能力(方法)是否是屬于這類事物(類)的本能。 如果是,就封裝在這個類里。 如果不是,則考慮封裝在其它類里。 如果這種能力,很多事物都具有,則一定要封裝在這類事物的總類里。 如果這種能力,很多事物都會經常用到,則可以封裝成一個總類的靜態方法。 *** 某些模塊必然要關聯起來才能工作,這是由業務邏輯決定的,不能否認。所以解耦并不是字面意義上的把關聯拆掉,而是把模塊之間的關聯放松到必要的程度。一些建議: **模塊只對外暴露最小限度的接口,形成最低的依賴關系。** 只要對外接口不變,模塊內部的修改,就不得影響其他模塊; 刪除一個模塊,應當只影響有依賴關系的其他模塊,而不應該影響其他無關部分; 軟件工程有一條鐵律“高內聚、低耦合”就是這個道理:必要的耦合不可否認,沒有耦合程序就做不成事;但是不必要的緊耦合,就會讓程序“牽一發而動全身”,最終讓程序員的編寫和維護都無從下手。 人類同一時間只能專注于一小部分的內容。“高內聚、低耦合”就是為了滿足人類的這個特點——小尺度上只專注一個模塊,局部的編碼工作才能夠進行。大尺度上把具體代碼轉化為一些抽象的“模塊”和“依賴關系”,才能夠抓大放小,把握住程序的脈絡,拼合出一個完整的產品。 ## 示例 1. 有個例子很容易明白:一個程序有50個函數,這個程序執行得非常好;然而一旦你修改其中一個函數,其他49個函數都需要做修改,這就是高耦合的后果。 2. 想象一下“社會大分工”這個模型——每一個小單位只專注自己的業務部分,與其他單位只存在業務外包的關聯,以及物質、信息的交互。事實已經證明:這樣的模型比以前大國企“大包大攬”自辦各種職能部門的效率,有量級程度的提高。這就是“高內聚、低耦合”在現實世界中的體現。 ## 總結 一旦你理解了它,你編寫概要設計的時候設計類或者模塊自然會考慮到“高內聚,低耦合”。 程序就是人類創造的第二世界,程序的邏輯無非是世界運行規律的抽象(面向對象比面向過程更加的切合現實世界)。跳出程序看程序,就會發現不一樣的觀點和角度。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看