16

Dart スタイル ガイドでは、静的メソッドの代わりにコンストラクターを使用してインスタンスを作成することを推奨しています。これは、" Dart の名前付きコンストラクターとファクトリ コンストラクターを使用すると、他の言語の静的メソッドのすべての柔軟性が得られる一方で、呼び出しサイトを通常のコンストラクター呼び出しのように見せることができるためです。 "。

ファクトリ コンストラクタではなく静的メソッドとしてint.parse()andを宣言した技術的な理由はありますか?double.parse()

より一般的に言えば、Dart で静的 (ファクトリ) メソッドよりもファクトリ コンストラクタを作成することを選択するためのガイドラインは何でしょうか?

4

1 に答える 1

17

Google グループをしばらく調べてみたところ、実際に公式の説明を見つけました:グループ ディスカッションへのリンク

アーカイブの目的で、リンクから引用されたテキストを以下に示します。

コンストラクタにしようかと思ったのですが、int や double の値には合いませんでした。

おそらく、int と double には実際にはコンストラクターがないため、「parse」はコンストラクターというよりもユーティリティ関数と見なされます。整数を作成するのではなく、それを発見します。

また、現在のところ、文字列が数値リテラルかどうかを確認する唯一の方法は、parse を呼び出して、それがスローされるかどうかを確認することです (しかし、私はそれで完全に満足しているわけではありません!)、プログラミング以外でスローするコンストラクターは好きではありません。エラー。

そして、このようにその前に「new」と書く必要はありません。特にメリットはありません。

明らかにコンストラクターではないという確固たる理由は 1 つではありませんが、いくつかの小さな問題が合わさって、静的関数として好むようになっています。

私の「パフォーマンス目的」の理論はこれで終わりです。しかたがない。

于 2014-01-27T21:25:07.480 に答える