目次

avoid_type_to_string

回避する。本番コードでは、結果は縮小される可能性があるため、.toString()は使用しないでください。

このルールはDart 2.12以降で利用可能です。

詳細

#

.toString()の呼び出しは避けてください。本番コードでは.toString()を呼び出さないでください。これは、型のユーザー定義名(または基になるクラス)を契約により返すとは限らないためです。コードサイズが問題にならない開発モードのコンパイラは完全な名前を使用しますが、リリースモードのコンパイラはこれらのシンボルを縮小することを選択することがよくあります。

悪い例

dart
void bar(Object other) {
  if (other.runtimeType.toString() == 'Bar') {
    doThing();
  }
}

Object baz(Thing myThing) {
  return getThingFromDatabase(key: myThing.runtimeType.toString());
}

良い例

dart
void bar(Object other) {
  if (other is Bar) {
    doThing();
  }
}

class Thing {
  String get thingTypeKey => ...
}

Object baz(Thing myThing) {
  return getThingFromDatabase(key: myThing.thingTypeKey);
}

使用方法

#

avoid_type_to_stringルールを有効にするには、analysis_options.yamlファイルのlinter > rulesの下にavoid_type_to_stringを追加します。

analysis_options.yaml
yaml
linter:
  rules:
    - avoid_type_to_string