2020/11/10 Understanding null safetyの訳パート1

 

null-safetyは、 Dart 2.0で元の不健全なオプションの型システムを健全な静的型システムに置き換えて以来、Dartに加えた最大の変更です。

Dartが最初にリリースされたとき、コンパイル時のnullの安全性は、長い導入を必要とするまれな機能でした。今日、Kotlin、Swift、Rust、およびその他の言語はすべて、非常によく知られている問題に対する独自の答えを持っています次に例を示します。

// Without null safety:
bool isEmpty(String string) => string.length == 0;

main() {
  isEmpty(null);
}

conditional property access

上記のコードをnull-safety無しで実行すると、.lengthにおいてNoSuchMethodError …

2020/11/10 Dart sound null safety: technical preview 2の訳

Dartは、Flutterで特別な役割を果たし、ホットリロードなどの開発者機能を強化し、Dartの柔軟なコンパイラテクノロジーを介してモバイル、デスクトップ、およびWeb用のマルチプラットフォームアプリを有効にします。私たちは、Dart言語をFlutterアプリ開発者にとって最も生産的なものにするよう努めています。たとえば、FlutterウィジェットツリーをコーディングするためのDart構文を最適化するために、UI-as-code言語構造を追加しました。

6月に、Dartのnull safetyの最初の技術プレビューを提供しました。今日は、私たちがしばらく楽しみにしていたもう1つの主要なマイルストーンです。Flutterフレームワークのサポートを含む、サウンドヌルセーフティの2番目の技術プレビューを発表します。

null safetyは、発見がしいことが多いバグのクラスであるnull exceptionsを回避するのに役立つ主要な新しい生産性機能です。追加のボーナスとして、この機能により、さまざまなパフォーマンスの向上も可能になります。皆様からのフィードバックをお待ちしております。


Why null safety?

Dartはタイプセーフ(型安全)な言語です。これは、あるタイプ(型)の変数を取得すると、コンパイラーがそのタイプ(型)であることを保証できることを意味します。ただし、型安全性自体は、変数がnullでないことを保証するものではありません。

Null errorsは非常に一般的です。GitHubで検索すると、Dartコードの予期しないnullによって引き起こされる何千もの問題が発生し、さらに何千ものコミットがそれらの問題を修正しようとします。以下のFlutterアプリサンプルでNULL値に関する問題を見てみてください。ConfigWeatherServiceはアプリで使用されるバックエンドサービスであると想定してください。

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // ↓サービスからデータを取得します。普通これらの処理は
    // 非同期処理ですが、簡単にするためにこのサンプルでは
    // 同期処理としてコードを書いています。