無瑕的程式碼 二讀
無瑕的程式碼 二讀¶
開篇就討論什麼是科學,例如F=ma,你無法證明他正確,只能夠不停嘗試證明他是錯的(可證偽),如果怎麼樣都無法證明他有錯,你就只能接受他是對的。
測試也是這樣,是用來找錯的而不是像數學方式是證明程式是對的。
而軟體的第一個價值:行為,是迫切的,但不總是特別重要
第二個價值:架構,是重要的,但從不特別迫切
程式設計也分成三個:
結構化程式設計,例如if-elif-else /do while,重點這些控制結構可以被細分為可測試的單元,可以測試就可以嘗試找到錯誤的存在,因此也解釋了功能分解的重要
物件導向程式設計:最重要的貢獻是提供了多型,獲得系統中程式碼依賴方向的絕對控制力,也就是在間接控制轉移加上規範。
函數式程式設計:在變數賦值加上規範
元件設計原則
應該是有向無環圖,每個元件的依賴性不能形成環,這樣一來當一個點做出更動,找到受影響的元件就很容易,也不會牽一髮動全身。當遇到違反情況時,可以將會依賴的部分拆出功能,在形成新的環圖
穩定性:衡量一個元件穩定性可以用(fan out)/(fan out+ fan in)來表示,一個不穩定的元件表示他只有fan out,大家都依賴他,他卻不依賴其他。
以目前看起來,到元件以層級以下的建議都蠻有用,但到了與機器或韌體配合的部分以目前的技術來說還有些遙遠,未來繼續專研時也許會在更有感覺
Comments
Loading comments…
Leave a Comment