建議111:避免雙向耦合
雙向耦合是指兩個型別之間相互引用。下面的**是一種典型的雙向耦合:
class雙向耦合在同一專案下,不會存在太多的問題,帶來的只是設計問題。不過,如果兩個類在不同的專案中時,就必須考慮解耦了,因為.net不允許專案之間相互引用。如果嘗試兩個專案相互引用將出現錯誤提示。a
}class
b
}
常見的解耦方式就是提煉出乙個介面。如果a、b型別分別在兩個專案中,則提煉出來的介面要放在新起的專案中,然後讓a、b所在的兩個專案分別引用這個介面所在的專案。
解耦後的**如下所示:
inte***ce介面isample規範了型別a的行為,同時讓型別a繼承自isample。在型別b中,我們針對介面程式設計,也就是說,在b中的字段a不再是a型別,而是將其修改為isample型別。isample
class
a : isample
}class
b
}
一般來說,型別之間不應該存在雙向耦合,如果有此類情況出現,則應該考慮重構。有一些第三方的框架都支援對專案進行解耦,如微軟企業庫(enterprise library)中的unity和spring.net。在實際的編碼中,可以考慮使用這些框架設計我們的專案。
**:《編寫高質量**改善c#程式的157個建議》陸敏技
避免死鎖的建議
正確使用讀操作語句 經過之前文章介紹,我們知道一般的快照讀是不會給資料表任何鎖的。那麼這些快照讀操作也就不涉及到參與任何鎖等待的情況。那麼對於類似insert select這樣需要做當前讀操作的語句 但又不是必須進行當前讀的操作 筆者的建議是盡可能避免使用它們,如果非要進行也最好放到資料庫操作的非高...
mysql使用建議,盡量避免這些問題
做伺服器端開發的同學們,相信對於mysql應該是十分熟悉,但是一旦真正出現問題,你是否能夠快速的發現問題的起因,並且解決呢?一旦問題涉及到資料庫層面,往往不是那麼好解決的,通常來說,我們需要提前做應對未來可能出現問題的準備。下面是幾條針對mysql使用的優化建議 儘量減少資料庫上的計算操作 將那些需...
mysql使用建議,盡量避免這些問題
做伺服器端開發的同學們,相信對於mysql應該是十分熟悉,但是一旦真正出現問題,你是否能夠快速的發現問題的起因,並且解決呢?一旦問題涉及到資料庫層面,往往不是那麼好解決的,通常來說,我們需要提前做應對未來可能出現問題的準備。下面是幾條針對mysql使用的優化建議 儘量減少資料庫上的計算操作 將那些需...