Flutter/DartでEnum(列挙型)を使う:コードの保守性と可読性を向上させる

はじめに

Flutterでの開発において、コードの可動性や保守性は非常に重要です。Enum(列挙型)は、限られた選択肢を持つ変数を表現するのに役立ちます。この記事では、FlutterでEnumを使う方法とその利点を紹介します
enumについてのドキュメント
Flutterについてのチュートリアルは下記記事に記載していますのでこちらもご参考にお願いします

初めてのFlutterアプリ開発チュートリアル

初めてのFlutter/Dartマルチプラットフォームアプリ開発チュートリアル
はじめに FlutterはGoogleが開発した、マルチプラットフォームのモバイルアプリ開発のフレームワークです。Flutterを使うと、AndroidとiOSの両方のプラットフォームで同時にアプリを開発することができます。 また、ブラウザ...

Enumとは?

Enum(列挙型)はプログラミング言語で定義された特殊なデータ型であらかじめ定められた値を扱うことができる型になります。

これにより、Enumで指定されたデータ型以外は設定できないようにできたり、データ型にわかりやすい変数名を決めることで保守性や可読性を高めることができます。

Enumを使ってみる

以下はFlutterでEnumを使用する方法です

1.Enumの定義

enum GenderType {
  male,
  female,
  other,
  preferNotToSay,
  unset;
}

この例では、GenderTypeというEnumを定義して、性別を表す選択肢を用意しています。

2. Enumの使用

void main() {
  GenderType genderType = GenderType.male;

  print("my gendar is $genderType");
}

このようにGendarType.maleをgenderType変数に代入することで、「my gendar is GenderType.male」がコンソールに出力されます

3. Enumの応用

次にEnumを利用した応用を紹介します。

dartでは、extensionを利用して、Enumに応じて、必要なメソッドやプロパティを定義することができます

下記の例では、textプロパティを定義して、GenderTypeに応じた性別の文字列を返すようにしています。

extension GenderTypeExtension on GenderType {
  String get text {
    switch (this) {
      case GenderType.male:
        return '男性';
      case GenderType.female:
        return '女性';
      case GenderType.other:
        return 'その他';
      case GenderType.preferNotToSay:
        return '非公開';
      default:
        return '未設定';
    }
  }
}

例えば、下記のようにとするとgenderType変数がGenderType.maleなのでそれに応じた「男性」という文字列が利用できます
「my gendar is 男性」という結果がコンソールに出力されます

void main() {
  GenderType genderType = GenderType.male;

  print("my gendar is $genderType.text");
}

他にも下記のようにequalsを定義することで比較メソッドも自由に作成することができます

extension GenderTypeExtension on GenderType {
    bool equals(String name) {
    return this.name == name;
  }
}

Enumの利点

はじめにも紹介しましたがEnumの利点では下記のような利点が考えられます

  1. 可読性の向上:コード内で使用される値が制限されるため、他の開発者がコードを理解しやすくなります。
  2. 保守性の向上:コード内で使用される値を一元管理できるため、後から値を変更したい場合も簡単に対応できます。
  3. エラーの防止:コード内で使用される値が制限されるため、誤った値を代入するリスクが減ります。

さらにExtensionを使うことで、既存のクラスにカスタムメソッドやプロパティを追加することができます。これにより、コードの再利用性が向上し、開発効率が向上したり、コードの構造が整理され、他の開発者がコードを理解しやすくなることから、開発の効率化に役立つ可能性があります

まとめ

Enumは、Flutter開発において、コードの可読性や保守性を向上させるために役立ちます。限られた選択肢を持つ変数を表現する際には、Enumを積極的に活用しましょう。