2012年6月2日 星期六

[C/C++] 列舉(enum)


列舉主要的應用是在增加程式的可讀性
尤其是大型多人專案
 

以下舉個小例子來說明:

今天我們寫了一個ShowWeapon的函式

public void ShowWeapon(int x)
{
  cout << "your weapon is"
  switch(x)
  {
    case:1
      cout << "Axe";
      break;
    case:2
      cout << "Staff";
       break;
    case:3
      cout << "Dagger";
      break;
  }
}

當我們使用
ShowWeapon(1);    // point "your weapon is Axe"
給他1它會印出Axe 2就是Staff 3就是Dagger

在寫程式的當下會很爽
但是等你過幾天回來或是這個程式給別人維護的時候就會很不爽了

天殺的,誰知道你的代入值1,2,3是什麼意思

這個時候我們在前面加上enum的話會變成

enum Weapon : int
{
  Axe = 1,
  Staff = 2,
  Dagger = 3
}

public void ShowWeapon(int x)
{
  cout << "your weapon is"
  switch(x)
  {
    case:1
      cout << "Axe";
      break;
    case:2
      cout << "Staff";
       break;
    case:3
      cout << "Dagger";
      break;
  }
}

原本的ShowWeapon就可以這麼用
ShowWeapon(Weapon:Axe);     // point "your weapon is Axe"
ShowWeapon(Weapon:Staff);   // point "your weapon is Staff"
ShowWeapon(Weapon:Dagger);  // point "your weapon is Dagger"

可以讓自己也讓後面維護的人清楚這個位置的代入值要填入些什麼
也可以約束填入的內容才不會發生未預期到的錯誤

以上面的例子來說,如果沒有使用enum的話,很可能會出現4,5,6這類超出原本預期的數值
而使用enum後,把所有可以填的數值都規範在enum結構裡了


沒有留言: