框架必須以易于使用的方式來為普通用戶提供一個低門欄。

每個人在第一次接觸一個新框架時,都希望其是簡單而功能強大的。如果他一開始就感覺其很復雜,則會望而卻步。

  • 要確保每個特性域的名字空間只包含哪些用于最常見場景的類型。應該把用于更高級的場景的類型放在子名字空間中。
    例如:System.Net命名空間提供了有關網絡的主要API,而更高級的socket API則位于System.Net.Socket子命名空間。
  • 要為構造函數和方法提供簡單的重載函數。參數少,且都是基本類型。
  • 不要在為主要的使用場景而設計類型中包含用于高級場景(這里我個人感覺是不常用的意思)的方法。
    通過從框架中減少(或至少不增加)特性,能夠使開發人員更有效率。因為需要處理的概念減少了。CLR把多重繼承排除在外就是這個原因。
  • 不要要求用戶在最基本的場景中顯示地實例化一個以上的類型。
  • 不要要求用戶在為基本使用場景編寫代碼之前就進行大量的初始化。
    如果一些初始化是必需的,那么當用戶未執行初始化而引起異常時,應該在異常消息中清楚的告訴用戶需要做些什么。
  • 要盡可能地(用便利的重載函數)為所有的屬性和參數提供合適的默認值。
    當然不要盲目采用,如果默認值會引起錯誤,自然不可取。
  • 要通過異常來傳達API的誤用。
    顯示錯誤的原因、如何修正等信息。