KISS(Keep It Simple & Stupid):保持精簡,而且看起來很「愚蠢」。編程
在軟件開發中,一個系統會變得愈來愈龐大,系統熵(複雜度)會變得愈來愈大,致使咱們愈來愈難以hold整個系統(智商問題¯_(ツ)_/¯)。因此咱們引入了KISS原則來使**系統熵(複雜度)**保持穩定的數值。後端
一個好的統一命名風格,有利於系統的擴展和維護,推薦駝峯命名法。瀏覽器
靜態語言的合理使用,能最大程度的保證代碼重構後的影藏問題,在編譯期就能夠fix。不過有些場合很是卻不是這樣子,好比說瀏覽器,Shell等。靜態或者動態語言仍是須要綜合考量。架構
當系統變的愈來愈大的時候,咱們不能簡單的經過將單體架構運行在多個PC上作負載均衡來達到性能上的突破,而應該將整個集羣當作一個系統,使用微服務的概念優化總體設計。負載均衡
高內聚是指對程序中功能相近的點進行獨立化, 若是兩個模塊之間的修改, 互不影響則說明模塊之間是高內聚的。前後端分離
高內聚意味可維護性,可重寫性,由於模塊對外部的依賴少(功能的完備性)。模塊的內聚和其擔當的職責成反比,即模塊的職責越多,模塊的內聚性越低。分佈式
如何劃分出一個模塊, 這就須要關注點分離。模塊化
耦合是描述模塊之間的依賴程度,若是一個模塊的修改,都對另外一個模塊進行修改,則兩模塊之間是相互依賴耦合的,這種設計不是理想的設計。微服務
低耦合是咱們的設計目的,可是不存在沒有耦合的程序。耦合是必須的,由於模塊之間必須通訊交互,不過能夠設計出依賴於不變或者不易變的接口, 而不須要關注模塊內的實現, 從而實現低耦合。性能
實現高內聚低耦合行之有效的方式:關注點分離(SOC),將系統在不一樣層次[水平/垂直]上進行拆分, 造成功能不一樣沒有重疊的模塊。
每一個功能只關注一個方面(Aspect)保證模塊之間功能沒有或者儘可能少的重複。
模塊化內部實現細節隱藏,只暴露必須的接口,使得模塊之間依賴於抽象,達到穩定。
分離關注點的思想存在於咱們軟件設計的各個領域。例如:
經過對程序的關注點分離, 使得程序各個模塊之間變得高內聚低耦合.
在軟件開發設計中, 高內聚低耦合原則的實現是還依賴於綜合約束,且貫穿整個軟件生命週期, 而且軟件開發過程當中切忌過分設計。
綜合約束:業務邏輯, 軟件條件, 硬件條件, 性能指標, 語言, 具體編碼環境等因素。
在面向對象的開發過程當中,咱們有一些軟件設計上的原則:
經過這些原則咱們能夠很是方便的設計出高內聚低耦合的代碼結構。
在開發過程當中須要遵照KISS原則,使用一些方法/設計來達到下降系統熵,提升系統維護性的目的。