override:子類別繼承父類別的函式,然後改寫其繼承的函式,但必須是函式名稱相同、參數型態個數相同,傳回型態相同。
overload:相同的函式名稱,但參數型態、參數個數、傳回型態只要任一個不同,就會呼叫不同的函數。
process的通常流程=要求資源->使用資源->釋放資源
而dead lock通常要滿足下面條件
a.Mutul exclusion:一個資源(Instances)一次只能被ㄧ 個process使用。
b.Hold and wait:當多個process發生mutul exclusion,然後尋求下一個資源時,都有process在 使用,造成一個等待資源動作出現。
c.No preemption:而資源又不能經過其他方法來釋放,只能依靠使用的process來自行處理。
d.Circular wait:就造成每個process都握有另一個process請求的資源,然後各自沒有釋放本身 持有的資源,造成一個循環出現。
那我們該如何處理
a.完全無視他...反正出現死結機率很低,大不了重開機或重開程式讓他重新來過就好了...
b.偵測死結發生,然後經由自己寫的程式邏輯來恢復運作。
c.使用一個protocol來預防或避免死結發生。
3.繼承、封裝、多型,如何用最普通的講話來解釋?
因為我只會實作,真的沒想過如何用普通的講話說出來,我這裡試著用我想法講出來
這裏我舉一個汽車工廠的例子
當母公司做了一個汽車模組出來分送給底下的子公司,然後子公司依照所待的國家區域,來做調整,例如是顏色問題、燈的明暗度、和左右邊駕駛問題,而這就是「子繼承父」的觀念了。
而封裝就像是避免存取一些你不想讓人知道的東西,舉個例子來說,每個汽車裡都有一個微電腦,而開發汽車微電腦的人,不想有人亂動裡面機密的設定,避免造成車禍事件發生,所以他們就只提供,供應微電腦的電源連接器、微電腦輸出設定到儀表板上,而微電腦就是被封裝的東西,而電源連接器和輸出設定就是提供微電腦的介面方法。
多型,我就在繼承的例子,再改一下,當母公司做了一個汽車模組設計圖,而這個汽車模組設計圖依照各個國家、地區、氣候、政治的不同,有不同的設計成品出來,而這些設計成品的原型是從「同一個名稱的汽車模組設計圖」出來的。
dirty code指的是讓人覺得很難看得懂的程式,有可能是重複宣告、同樣的程式碼、髒亂的排版、沒有註解...等等,而會造成這個原因有可能是自身實力不足或者是為圖方便之類,從而造成程式碼越來越髒、當越髒時Bug也會越多,因為當你看不懂時就會亂改參數或者是重新寫一個新的,而通常這都會造成下一個問題出現,因為你看不懂程式碼,無法全面觀察改變之後會造成什麼事情出現,而clean code就是除去這些問題所寫的完美程式碼,我這裡推薦兩個網址,這裡詳述一些dirty code的問題。
http://www.ithome.com.tw/node/83209
http://keystonegame.pixnet.net/blog/post/17243817-%E7%A8%8B%E5%BC%8F%E7%A2%BC%E5%A3%9E%E5%91%B3%E9%81%93(code-bad-smell)
參考資料:
http://sls.weco.net/node/21327
http://www.ithome.com.tw/node/83209
http://keystonegame.pixnet.net/blog/post/17243817-%E7%A8%8B%E5%BC%8F%E7%A2%BC%E5%A3%9E%E5%91%B3%E9%81%93(code-bad-smell)
https://toggl.com/developer-methods-infographic
沒有留言:
張貼留言