2008年11月12日 星期三

Framework Design(2) : Property

Property 一般用來封裝 private member field。

  1. Property  應該愈簡單愈好,且不該 throw exception
  2. Property 不該與其他 Property 相關。設定一個 Property 時不該影響到其他的 Property
  3. Property 可以以任意順序來設定

Property 與 Method 有一定的相似度。何時應該用 Method 呢?

  1. 代表一種轉換時。例如 .ToString()
  2. 使用 Property 會導致 side effect 時
  3. 須要較長時間運算時
  4. 回傳陣列時
舉例來說,下面範例是不好的程式碼。因為會讓 calling method 誤認為 Roles 這個 property 取得的成本很低。

 public class User
  {
    public Role[] Roles
    {
      get { return roles_from_database; }
    }
  }

  //calling method
    User user = new User();
    for (int i = 0; i < user.Roles.Length; i++)
    {
      Role role = user.Roles[i];
      //more
    }
此時應改成 method, 就不會讓人誤會了
 public class User
  {
    public Role[] GetRoles()
    {
      get { return roles_from_database; }
    }
  }

  //calling method
    User user = new User();
    Role[] userRoles = user.GetRoles();
    for (int i = 0; i < userRoles .Length; i++)
    {
      Role role = userRoles[i];
      //more
    }

沒有留言:

Share with Facebook