目次

Effective Dart

過去数年間にわたって、私たちは大量のDartコードを記述し、何がうまく機能し、何が機能しないのかについて多くのことを学びました。私たちはこれを皆さんと共有することで、皆さんも一貫性があり、堅牢で、高速なコードを記述できるようにします。2つの主要なテーマがあります。

  1. 一貫性を保つ。フォーマットやケースなどに関しては、どちらが良いかについての議論は主観的で、解決不可能です。私たちが知っているのは、一貫性が客観的に役立つということです。

    2つのコードが異なって見える場合、それは何らかの意味のある方法で実際に異なるためであるはずです。コードの一部が目立って目を引く場合、それは有用な理由によるはずです。

  2. 簡潔にする。Dartは使い慣れたものになるように設計されているため、C、Java、JavaScriptなどの他の言語と同じ多くのステートメントと式を継承しています。しかし、私たちは、これらの言語が提供するものを改善する余地が非常に多いため、Dartを作成しました。文字列補間から初期化形式まで、多くの機能を追加して、より簡単に、そして簡単にあなたの意図を表現できるようにしました。

    何かを言うための複数の方法がある場合、一般的に最も簡潔な方法を選択する必要があります。これは、コードゴルフをしてプログラム全体を1行に詰め込むべきだと言っているわけではありません。目標は、密度の高いコードではなく、経済的なコードです。

ガイド

#

理解しやすいように、ガイドラインをいくつかの別々のページに分割しました。

  • スタイルガイド – これは、コードのレイアウトと構成に関するルール、あるいは少なくともdart formatが処理しない部分を定義しています。スタイルガイドでは、識別子のフォーマットも指定されています: camelCaseusing_underscoresなど。

  • ドキュメントガイド – これは、コメントの中に何が含まれるべきかについて知っておく必要があるすべてを説明しています。ドキュメントコメントと通常のコードコメントの両方についてです。

  • 使用方法ガイド – これは、言語機能を最適に使用して動作を実装する方法を教えます。ステートメントや式にある場合は、ここで説明されています。

  • 設計ガイド – これは最も柔軟なガイドですが、最も広い範囲をカバーしています。ライブラリの、一貫性があり、使いやすいAPIを設計することについて学んだことが記載されています。型シグネチャや宣言にある場合は、ここで説明されています。

すべてのガイドラインへのリンクについては、概要を参照してください。

ガイドの読み方

#

各ガイドはいくつかのセクションに分割されています。セクションには、ガイドラインのリストが含まれています。各ガイドラインは、次のいずれかの単語で始まります。

  • DOガイドラインは、常に従うべき実践を記述しています。それらから逸脱する正当な理由はほとんどありません。

  • DON'Tガイドラインは、その逆です。ほとんどの場合、良い考えではありません。歴史的な負担が少ないため、他の言語ほど多くはないことを願っています。

  • PREFERガイドラインは、従うべき実践です。ただし、そうでない方が理にかなう状況もあるかもしれません。ガイドラインを無視する場合、その完全な意味を理解するようにしてください。

  • AVOIDガイドラインは「prefer」の反対です。行うべきではないものですが、まれに良い理由がある場合もあります。

  • CONSIDERガイドラインは、状況、先例、そしてあなた自身の好みによっては、従うか従わないかのいずれかになる可能性のある実践です。

一部のガイドラインでは、ルールが適用されない例外について説明しています。リストされている場合、例外は網羅的ではない可能性があります。他のケースでは、判断が必要になる場合があります。

靴紐が正しく結ばれていないと、警察がドアを叩き壊してくるように聞こえます。それほど悪いことではありません。ここのガイドラインのほとんどは常識であり、私たちは皆理性的な人間です。目標は、常に、美しく、読みやすく、保守しやすいコードです。

Dartアナライザーは、これらのガイドラインおよびその他のガイドラインに従った、良好で一貫性のあるコードを記述するのに役立つリンターを提供します。ガイドラインに従うのに役立つリンタールールが1つ以上存在する場合は、ガイドラインがそれらのルールにリンクされます。リンクは次の形式を使用します。

リンタールール: unnecessary_getters_setters

リンターの使用方法については、リンタールールの有効化リンタールールのリストを参照してください。

用語集

#

ガイドラインを簡潔にするために、異なるDart構成体を指すためにいくつかの略語を使用しています。

  • ライブラリメンバーとは、トップレベルのフィールド、ゲッター、セッター、または関数です。基本的に、型ではないトップレベルのすべてです。

  • クラスメンバーとは、クラス内で宣言されたコンストラクタ、フィールド、ゲッター、セッター、関数、または演算子です。クラスメンバーは、インスタンスまたは静的、抽象または具体的ないずれかになります。

  • メンバーとは、ライブラリメンバーまたはクラスメンバーのいずれかです。

  • 変数は、一般的に使用される場合、トップレベル変数、パラメーター、およびローカル変数を指します。静的またはインスタンスフィールドは含まれません。

  • とは、クラス、typedef、または列挙型など、名前付きの型宣言です。

  • プロパティとは、トップレベル変数、ゲッター(クラス内またはトップレベル、インスタンスまたは静的)、セッター(同じ)、またはフィールド(インスタンスまたは静的)です。おおよそ「フィールドのような」名前付き構成体です。

すべてのルールの概要

#

スタイル

#

識別子

順序

フォーマット

ドキュメント

#

コメント

ドキュメントコメント

Markdown

記述

使用方法

#

ライブラリ

Null

文字列

コレクション

関数

変数

メンバー

コンストラクタ

エラー処理

非同期処理

設計

#

名前

ライブラリ

クラスとmixin

コンストラクタ

メンバー

パラメータ

等価性