0Pricing
Dart Academy · レッスン

意図を明確にする名前付きコンストラクター

複数の構築方法を提供する

「意図を明確にする名前付きコンストラクター」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。

名前付きコンストラクタを使う理由

1つのクラスに、複数の構築方法が必要になることはよくあります。named constructorを使うと、それぞれの方法にわかりやすい名前を付けられるため、呼び出し側は得られるものを正確に把握できます。

命名構文

クラス名、ドット、そして任意のラベルを記述します。ClassName.labelという形式は、呼び出し箇所で短い文章のように読めます。

class Point {
  int x, y;
  Point.origin() : x = 0, y = 0;
}

名前付きコンストラクタの呼び出し

名前なしコンストラクタと同じように呼び出しますが、ラベルも指定します。これにより、コードからオブジェクト作成のintentが明確に伝わります。

var p = Point.origin();
print(p.x); // 0

複数の名前付きコンストラクタ

用途をそれぞれ表す名前付きコンストラクタを、必要なだけ追加できます。ここでは、空のカートを作るものとpreset済みのカートを作るものを用意しています。

class Cart {
  int items;
  Cart.empty() : items = 0;
  Cart.preset() : items = 3;
}

パラメータ付き名前付きコンストラクタ

名前付きコンストラクタも引数を受け取れるため、わかりやすいラベルと独自の値を組み合わせた、柔軟で読みやすいfactory-styleの入口にできます。

class User {
  String name;
  User.guest(this.name);
}

名前なしと名前付きの併用

クラスには通常の名前なしコンストラクタを残したまま、名前付きコンストラクタを追加できます。一般的なケースとspecialなケースの両方に対応できます。

class Color {
  int value;
  Color(this.value);
  Color.black() : value = 0;
}

異なるデータソースのモデル化

同じデータがJSONマップや生の値など異なる場所から届く場合、名前付きコンストラクタが役立ちます。それぞれに独自のlabelを付けられます。

class User {
  String name;
  User.fromName(this.name);
}

呼び出し箇所での可読性

Temperature.celsius(20)と単なる数値を比較してみてください。ラベルによって推測が不要になるため、名前付きコンストラクタは読み手にとってのclarityを高めます。

var t = Temperature.celsius(20);

同じ型のまま構築される

どのコンストラクタを呼び出しても、得られるのは同じクラスのインスタンスです。ラベルが変えるのはinitializedの方法だけで、型ではありません。

var a = Point.origin();
print(a is Point); // true

this.の省略記法と組み合わせる

名前付きコンストラクタでも同じthis.fieldの省略記法を使えるため、わかりやすいラベルを付けても初期化を簡潔に保てます。

class Box {
  int w, h;
  Box.square(this.w) : h = w;
}

説明的なラベルを選ぶ

fromMapやwithDefaultsのように、結果を説明するラベルを選びます。よいlabelは、呼び出し箇所そのものをドキュメントに変えます。

class Config {
  Config.withDefaults();
  Config.fromMap(Map m);
}

簡単な確認

名前付きコンストラクタの構文を確認しましょう。

まとめ:意図を明確にする

ドット構文でnamed constructorsを追加し、名前なしコンストラクタと併用し、パラメータを渡して意図が伝わりやすいオブジェクト作成を行う方法を学びました。👍

よくある質問

「意図を明確にする名前付きコンストラクター」レッスンは無料ですか?

はい。「意図を明確にする名前付きコンストラクター」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。

「意図を明確にする名前付きコンストラクター」で何を学びますか?

複数の構築方法を提供する ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Dart Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「意図を明確にする名前付きコンストラクター」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDart Academyレッスンでコードを書いて実行できますか?

はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. デフォルトコンストラクターとパラメーター付きコンストラクター
  2. 意図を明確にする名前付きコンストラクター
  3. 初期化子リストとリダイレクト
  4. Factoryコンストラクターとconstコンストラクター
← Dart Academyに戻る