建議111 避免雙向耦合

2021-07-22 12:40:02 字數 720 閱讀 3295

建議111:避免雙向耦合

雙向耦合是指兩個型別之間相互引用。下面的**是一種典型的雙向耦合:

class

a

}class

b

}

雙向耦合在同一專案下,不會存在太多的問題,帶來的只是設計問題。不過,如果兩個類在不同的專案中時,就必須考慮解耦了,因為.net不允許專案之間相互引用。如果嘗試兩個專案相互引用將出現錯誤提示。

常見的解耦方式就是提煉出乙個介面。如果a、b型別分別在兩個專案中,則提煉出來的介面要放在新起的專案中,然後讓a、b所在的兩個專案分別引用這個介面所在的專案。

解耦後的**如下所示:

inte***ce

isample

class

a : isample

}class

b

}

介面isample規範了型別a的行為,同時讓型別a繼承自isample。在型別b中,我們針對介面程式設計,也就是說,在b中的字段a不再是a型別,而是將其修改為isample型別。

一般來說,型別之間不應該存在雙向耦合,如果有此類情況出現,則應該考慮重構。有一些第三方的框架都支援對專案進行解耦,如微軟企業庫(enterprise library)中的unity和spring.net。在實際的編碼中,可以考慮使用這些框架設計我們的專案。

**:《編寫高質量**改善c#程式的157個建議》陸敏技

避免死鎖的建議

正確使用讀操作語句 經過之前文章介紹,我們知道一般的快照讀是不會給資料表任何鎖的。那麼這些快照讀操作也就不涉及到參與任何鎖等待的情況。那麼對於類似insert select這樣需要做當前讀操作的語句 但又不是必須進行當前讀的操作 筆者的建議是盡可能避免使用它們,如果非要進行也最好放到資料庫操作的非高...

mysql使用建議,盡量避免這些問題

做伺服器端開發的同學們,相信對於mysql應該是十分熟悉,但是一旦真正出現問題,你是否能夠快速的發現問題的起因,並且解決呢?一旦問題涉及到資料庫層面,往往不是那麼好解決的,通常來說,我們需要提前做應對未來可能出現問題的準備。下面是幾條針對mysql使用的優化建議 儘量減少資料庫上的計算操作 將那些需...

mysql使用建議,盡量避免這些問題

做伺服器端開發的同學們,相信對於mysql應該是十分熟悉,但是一旦真正出現問題,你是否能夠快速的發現問題的起因,並且解決呢?一旦問題涉及到資料庫層面,往往不是那麼好解決的,通常來說,我們需要提前做應對未來可能出現問題的準備。下面是幾條針對mysql使用的優化建議 儘量減少資料庫上的計算操作 將那些需...