以前沒有缺省參數這個說法時,為了讓別人調用我們的代碼方便一些,會寫很多構造函數,例如一個查詢方法貼一些代碼如下:
public DataTable Search(string search)
{
return Search(string.Empty, search, null, null, string.Empty);
}
public DataTable Search(string search, string[] roleIds)
{
return Search(string.Empty, search, roleIds, null, string.Empty);
}
public DataTable Search(string search, string[] roleIds, bool? enabled)
{
return Search(string.Empty, search, roleIds, null, string.Empty);
}
public DataTable Search(string search, string[] roleIds, string auditStates)
{
return Search(string.Empty, search, roleIds, null, auditStates);
}
public DataTable Search(string search, string[] roleIds, bool? enabled, string auditStates)
{
return Search(string.Empty, search, roleIds, enabled, auditStates);
}
那采用了缺省參數後,這部分代碼會被簡化成什麼樣子了呢?
public DataTable Search(string search = null, string[] roleIds = null, bool? enabled = true, string auditStates = null)
{
return Search(string.Empty, search, roleIds, enabled, auditStates);
}
哇靠,居然一行代碼就可以了,那麼多構造函數都不需要了, 代碼簡潔了很多了,清爽了很多,心裡也舒暢了.
新技術也往往會明顯提高生產效率.
將權限管理、工作流管理做到我能力的極致,一個人只能做好那麼很少的幾件事情。
摘自:權限管理系統組件源碼,專業權限設計【商業版】