《架構整潔之道》之程式設計正規化總覽

2022-02-02 11:47:28 字數 780 閱讀 4872

結構化程式設計是第乙個普遍被採用的程式設計正規化(但是不是第乙個被提出的),由edsger wybe dijkstra於2023年最先提出。與此同時,dijkstra還論證了使用goto這樣的無限制跳轉語句將會損害程式的整體結構。

結構化程式設計正規化歸納:

結構化程式設計對程式控制權的直接轉移進行了限制和規範。

程式設計領域中第二個被廣泛採用的程式設計正規化-物件導向程式設計。

事實上,這個程式設計正規化的提出比結構化程式設計早兩年,是在2023年由ole johan dahl和kriste nygaard在**中總結歸納出來的。這兩個程式設計師注意到在algol語言中,函式呼叫堆疊可以被挪到堆記憶體區域裡,這樣函式定義的本地變數就可以在函式返回之後繼續存在。這個函式就成為了乙個類的建構函式,而它所定義的本地變數就是類的成員變數,建構函式定義的巢狀函式就成為了成員方法。這樣一來,我們就可以利用多型來限制使用者對函式指標的使用。

物件導向程式設計歸納:

物件導向程式設計對程式控制權的間接進行了限制和規範。

事實上,函式式程式設計概念是基於與阿蘭.圖靈同時代的數學家alonzo church在2023年發明的λ演算的直接衍生物。2023年john mccarthy利用其作為基礎發明了lisp語言。眾所周知,λ演演算法的乙個核心思想是不可變性-某個符號所對應的值是永遠不變,所以從理論上來說,函式式程式語言中應該是沒有賦值語句的。大部分函式式程式語言只允許在非常嚴格的限制條件下,才可以更改某個變數的值。

函式式程式設計正規化歸納:

函式式程式設計對程式中的賦值進行了限制和規範。

《架構整潔之道》之函式式程式設計

函式式程式語言中的變數是不可變的。為什麼不可變性是軟體架構設計需要考慮的重點呢?為什麼軟體架構師要操心變數的可變性呢?答案顯而易見 所有的競爭問題 死鎖問題 併發更新問題都是由可變變數導致的。如果變數永遠不會被更改,那就不可能產生競爭或者併發更新問題。如果鎖狀態是不可變的,那就永遠不會產生死鎖問題。...

《架構整潔之道》之結構化程式設計

dijkstra很早就得出的結論是 程式設計是一項難度很大的活動。一段程式無論複雜與否,都包含了很多的細節資訊。如果沒有工具的幫助,這些細節的資訊是遠遠超過乙個程式設計師的認知能力範圍的。而在一段程式中,哪怕僅僅是乙個小細節的錯誤,也會造成整個程式出錯。dijkstra提出的解決方案是採用數學推導方...

《架構整潔之道》之元件聚合

軟體復用的最小粒度應等同於其發布的最小粒度。從軟體設計與架構設計的角度來看,復用 發布原則就是指元件中的類與模組必須是彼此緊密相關的。也就是說,乙個元件不能由一組毫無關聯的類和模組組成,它們之間應該有乙個共同的主題或者大方向。從另乙個角度來看,這個原則就沒有那麼簡單。因為根據該原則,乙個元件中包含的...