57
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

final変数とは?

final変数は、値を一度設定すると変更できない(再代入不可)。

final city = "Tokyo";
   // city = "Osaka";    // NG: 再代入はできない

const, lateなど定義キーワードがあrますが、大体のユースケースではfinalを使用することになる

var変数とは?

var変数は、値を設定しても何度も変更可能です(再代入可)。

var age = 25; 
age = 30;     // OK: 再代入が可能

Flutter Linter使用は?

Flutter開発行う際に、Linterライブラリーを導入する前提で考えましょう。

Lint使用目的:

  1. コードの一貫性
  2. バグの早期発見
  3. 非効率的なコードの改善
  4. 最新のベストプラクティスの適用

(+ 初心者には、 Lintのルールに従ってコードを書くのは一番らく)


Flutter Linterライブラリーの仕様には、大きく分けて2択があります。

A. 標準Lintルール用で、varとfinalをどっちも使用して構わないが。。。⬇

B. より厳しいLintルール用ライブラリーで。。。

Lintルールが厳しくなるほど、finalを定義することになるが。。。⬇

Flutterの実装は?

大幅にFlutterアプリの実装方針が以下に分類される。

(I) Flutter開発 + Linter使用であれば、

= final使用となる。

なるべくfinalを使用することと + Linterの実装でコードの安全性を保証すること。

単体テスト(ユニットテスト)では、Flutterの最小単位であるユニット(関数やメソッド、クラスなど)を個別にテストするコードを書く。

(II) Flutter開発 + Linter使用 + 単体テスト実装であれば、

= var使用となる。その理由は:

  1. ソースコード + 単体テストに使われる柔軟性
  2. var変数のステートをテストできる
  3. モックを導入することができる

結論

自分の担当してるFlutterプロジェクトで単体テストを実装するなら「var」を使用すること。
(より厳しいLinterの使用であれば、final関連のLintルールを無効化する)

var変数に単体テスト用のモックを再代入することで、より簡単に開発できる

それ以外のケースであれば、「final」を使用するのをお勧めします。

コードセキュリティの観点からそこまで深く考える必要はない。
(結果的にFlutterの難読化コマンドを使用することになる)

57
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
57
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?