我正在經歷的SO一個問題裏面講new features of c# 4.0和喬恩斯基特的回答有代碼契約功能的C#4.0 ..但我真的無法瞭解何時使用它們。任何建議...什麼時候應該使用C#4.0附帶的代碼合同?
18
A
回答
25
只要有可能。例如,任何地方,你會在方法的開頭使用保護條款像
public void Write(TextWriter tw, object o) {
if(tw == null) {
throw new ArgumentNullException("tw");
}
if(o == null) {
throw new ArgumentNullException("o");
}
tw.WriteLine(o.ToString());
}
你應該使用
public void Write(TextWriter tw, object o) {
Contract.Requires(tw != null);
Contract.Requires(o != null);
tw.WriteLine(o.ToString());
}
什麼是美麗的約Contract
的是,他們成爲市民,並且可以由部分文檔中沒有額外的工作,因爲警衛條款不公開,只能通過一些繁重的工作才能將文檔放入文檔中。因此,通過Contract
,您可以更清晰地在代碼中表達需求和承諾。
5
什麼是真正的美麗與合同是,你不必硬線那些醜陋的參數名字符串...
if(tw == null) throw new ArgumentNullException("tw");
相關問題
- 1. .net 4.0代碼合同。何時使用?他們什麼時候浪費時間?
- 2. 什麼時候應該使用AWS,什麼時候不使用
- 3. 什麼時候應該使用WPF 4.0中的SnapsToDevicePixels?
- 4. 什麼時候應該使用sed,什麼時候應該使用awk
- 5. 什麼時候應該使用memcpy,什麼時候應該使用memmove?
- 6. 什麼時候應該使用Import-Package,什麼時候應該使用Require-Bundle?
- 7. 什麼時候應該使用async/await,什麼時候不用?
- 8. C++元編程,爲什麼和什麼時候應該使用?
- 9. 在C#中,什麼時候應該使用一個結構,什麼時候應該使用一個類?
- 10. 什麼時候應該使用帶有符號的scanf()
- 11. 什麼時候應該使用datagrid,何時應該使用datagridview?
- 12. 什麼時候應該使用$(object),何時應該使用$ object?
- 13. 什麼時候應該使用FSharpFunc.Adapt?
- 14. 什麼時候應該使用_aligned_malloc()?
- 15. 什麼時候應該使用`use`?
- 16. 什麼時候應該使用$ rootScope?
- 17. 什麼時候應該使用$(document).ready?
- 18. 什麼時候應該使用html5 sessionStorage?
- 19. 什麼時候應該使用OWIN Katana?
- 20. 什麼時候應該使用流?
- 21. 什麼時候應該使用Promises?
- 22. 什麼時候應該使用setScriptTimeout?
- 23. 什麼時候應該使用助手?
- 24. 什麼時候應該使用Datomic?
- 25. 我什麼時候應該使用javax.swing.SwingUtilities.invokeLater()?
- 26. 什麼時候應該使用XS?
- 27. 什麼時候應該使用const?
- 28. 什麼時候應該使用退貨?
- 29. 什麼時候應該使用getElementById?
- 30. 什麼時候應該使用Solandra
除了以上地方合同是用來檢查先決條件,同樣可以使用它們以驗證後置條件 - 例如,在部分/完整方法體執行後,斷言某些變量/對象是否處於正確狀態。此外,合同也可以靜態評估(在編譯時)。 – VinayC 2010-12-09 04:35:18
@VinayC:是的,這正是我所指的「更清晰地表達您的代碼中的承諾」。感謝您爲我詳細闡述。 – jason 2010-12-09 05:17:42