iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 16
0
自我挑戰組

Framework 設計原則系列 第 16

Member Design(5) - Field

  • 分享至 

  • xImage
  •  
  1. 不能改變的欄位宣告為const
public struct Int32{
    public const int MaxValue = 0x7ffffff;
}
  1. 預先定義的物件實體,使用public static readonly
public struct Color{
    public static readonly Color Red = new Color(0x0000ff);
}
  1. 可變的Type不要宣告為readonly
    例如,陣列欄位不要宣告為readonly,錯誤範例如下

    public class SomeType{
        public static readonly int[] Numbers = new int[10];
    }
    

    以這個範例而言,Numbers雖然是readonly
    但是Numbers裡面的元素卻是可以改變的,就像下列方式

    SomeType.Numbers[5] = 10;
    

    對使用者而言這就不算是readonly
    所以陣列...等可變動的欄位不要宣告為readonly

  2. 不是readonly或static的一般欄位,不要宣告public 或 protected
    不要讓外面的程式可以改變field的值
    如果需要改變的話,考慮使用properties

public struct Point{
    private int x;
    private int y;
    
    public Point(int x, int y){
        this.x = x;
        this.y = y;
    }
    
    public int X{
        get{ return x;}
    }
    
   public int Y{
        get{ return y;}
    }
}

上一篇
Member設計原則(4) - Event
下一篇
Member Design (6) - Parameter
系列文
Framework 設計原則30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言