LoginSignup
7
5

More than 5 years have passed since last update.

実務でよく使っている列挙型Enum

Last updated at Posted at 2015-06-15

お疲れ様です。

本日は備忘録として実務でよく使う用語について紹介していきます。
Objective-C として、自分へのメモ代わり。

列挙型 Enum の記述方法

typedef NS_ENUM(NSInteger, SampleEnum) {
    SampleEnumType0 = 0,
    SampleEnumType1 = 1,
    SampleEnumType2 = 2,
};

こんな記載方法を(自分は)一番採用しています。

よくプログラミングでは整数であるNSInteger(int)型を
使われています。(特にTableView系の実装)、
あまりに0,1,2,3と数字をベタ打ちしていると自分のコードを
見直したときにあちこちに0,1,2,3の数字群が残ってしまうわけです。

プログラマの人はこの状況を一般的には好ましいとは思います。

というのも、あとでどっかでバグが発生したときに
そのバグを消す作業(デバッグ)をする過程で
あちこちにこれらの1,2,2,3などの数字がベタ打ちされていると
その数字にどんな意味があるのかをたどる必要が出てくるためです。

Enum という列挙型というのは、
この一件意味がない数字に対して他人がすぐに理解できるように
「ラベル」を付けることを可能にするテクニックです。

簡単にいえば、
数字をテキストとして扱えるようになるということです。

今までは int型でcountという変数を宣言して、

int count;

switch文による条件分岐をするときに

switch (count) {
    case 0:
        //メソッド0
        break;
    case 1:
        // メソッド1
        break;
    case 2:
        // メソッド2
        break;
    default:
        break;
}

これだとこのメソッドでバグが起きたら、

「これらの0,1,2がどんなときに起きるパターンをいちいち
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
再現しないと0,1,2がどういう状態なのかが全く分からない」
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

のです。
(これは実際にデバッグをする側にならないと、
さらに複雑なシステムにならないと怖さが理解できません。)

そのため、実務ではこういった無機質な記号である数字はなるべく使わないように

Enum で数字を列挙してそれらにラベルを貼っていきます。
これが列挙型の特徴です。

今回の例では、列挙型を使うとさっきのswitch文が

switch (count) {
    case SampleEnumType0:
        //メソッド0
        break;
    case SampleEnumType1:
        // メソッド1
        break;
    case SampleEnumType2:
        // メソッド2
        break;
    default:
        break;
}

という風に書き換えることができます。

今日はこれで終わります。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5