微服務學習筆記 三大程式設計正規化

2021-10-20 22:43:25 字數 636 閱讀 8522

三大程式設計正規化包括,結構化程式設計,物件導向程式設計,函式式程式設計。

結構化程式設計是指將複雜程式遞迴拆分成一系列更小的,可證明的單元(函式),之後通過編寫測試來試圖證明這些函式是錯誤的。如果無法證偽這些函式,就可以認為這些函式足夠正確,進而推導整個程式是正確的。(注意,這裡是用科學論證法進行驗證,只要函式無法證偽,就能認為其足夠正確;而數學論證則要求證明函式的正確性)

由於需要遞迴的將程式拆分成更小的,可證明的單元,而使用goto語句會導致某個模組無法遞迴拆分,進而違背了結構化程式設計正規化。所以,在結構化程式設計正規化中限制程式設計師使用goto 語句。因為它是有害的!

雖然很多人認為物件導向程式設計就是封裝、繼承、多型,這三種特性的有機組合,任何一種支援物件導向的程式語言必須支援這三特性,但是這樣說是不準確的。

《架構整潔之道》一書指出,就封裝性而言,大多數的物件導向語言的封裝性不如c語言,而繼承性只是在c語言既有的繼承性的基礎上進行了優化,真正使其聲名大噪的是其多型性,利用多型性成就了依賴反轉這一架構手段。

所以《架構整潔之道》一書定義:在架構層面而言,物件導向程式設計就是利用多型手段對源**中的依賴關係進行控制的能力,這種能力讓軟體架構師可以構造出某種外掛程式式架構,達到依賴反轉的目的。讓高層元件不再直接依賴底層元件,而是依賴於介面,再讓底層元件編譯成外掛程式(即介面的實現),從而使高層元件和底層元件解耦。

mysql三大正規化 MySQL學習筆記

1 資料庫結構設計 1 總 總體流程圖 2 分 提取屬性 業務分析評價的屬性 3 分 屬性 物件 邏輯設計 1 寬表設計模式 存在資料冗餘問題 寬表設計模式 2 資料庫三大正規化 解決資料冗餘問題 資料庫三大正規化 3 反正規化設計 空間換時間 主要針對關聯表進行反正規化化設計2 資料庫物理設計 1...

微服務學習筆記

所以如果要搭建一套新的監控系統,建議可以考慮採用 graphite tick 或者 prometheus 其 中之一。過 graphite 還需要搭配資料採集系統比如 statsd 或者 collectd 使用,而且介面展 示建議使用 grafana 接入 graphite 的資料來源,它的效果要比...

微服務學習筆記

1 建立乙個微服務 2 定時任務 1 scheduel 2 quartz springboot整合quartz 1 服務的註冊與發現 eureka spring cloud入門 eureka服務註冊與發現 各個微服務再eureka服務上註冊,eureka儲存各服務的host,port,服務間通過eu...