【Flutter】コードを書くときに気をつけること
はじめに
Flutterでの開発でdartのコードを書いているときに気をつけておきたいことをまとめたいと思います。
記事の内容を確認することで可読性や保守性の向上、バグの防止になると思います。
気をつけるポイント
早期returnしているか?
早期return(ガード節)は、条件分岐のネストが深くならないように、弾く条件を処理のはじめに書いてreturnします。
これをすることで冗長な構成を避けることができて、可読性を向上させることができます。
早期returnしていない場合
if (flag1 == true) {
if (flag2 == true) {
if (flag3 == true) {
function();
}
}
}
早期returnしている場合
if (flag1 == false) return;
if (flag2 == false) return;
if (flag3 == false) return;
function();
強制アンラップを使用していないか?
nullableな変数を扱うときに、変数!とすることでnon-nullableな変数として扱うことができます。ただ強制アンラップした変数がnullだった場合、TypeErrorエラーが発生してしまいます。なのでnullの場合はちゃんnullチェックをして処理を分岐させます。
// nullableな変数
String? data = getData();
// 強制アンラップでエラーの可能性ありの場合
String text = data!.toLowerCase();
// nullじゃなかったらメソッド実行して代入する
String text = data != null ? data.toLowerCase() : "";
final変数にしているか?
final変数に値を代入すると代入後は値が変わることがないので、値が変更されていることを考慮する必要がなくなります。変数の値が変更されない場合は、final変数を使用するようにします。
String mutableText = "変わる可能性がある(ミュータブル)";
final String immutableText = "変わる可能性がない(イミュータブル)";
型推論を使用しているか?
dartは代入時に型推論することができます。final変数に値を代入することで値の型を推測して自動で決定してくれます。
変数宣言時に型を書かなくていいので、コードが簡潔になり可読性の向上、型が変更されたときに変数の型を変更しなくていいなどメンテナンス性の向上にも繋がります。
final String text = "";
↓
final text = ""; // 型推論でtextはString型になる
プライベート変数・関数を使用しているか?
クラス内だけしか使わない変数や関数はプライベートにします。これによりクラス外から変数や関数を誤って使用されるのを防ぐことができます。
final _text = "プライベートな変数";
String _function() {
return "プライベートな関数";
}
nullable、non-nullableを適切に使用できているか?
変数を宣言するときに、nullがあり得る場合はnullableにして、nullがありえない場合はnon-nullableにします。
nullが入る可能性がないのに、変数をnullableにするとnullチェックなどの処理が増えます。
String text1 = getData();
String? text2 = getNullableData()
処理が冗長になっていないか?
dartでは三項演算子やmap関数を使用することで、より簡潔にコードを書くことができます。
これらを積極的に使用することで、コードの可読性を上げることができます。
// if文で条件分岐
if (flag) {
trueFunction();
} else {
falseFunction();
}
↓
// 三項演算子で条件分岐
flag ? trueFunction() : falseFunction();
final numbers = [1,2,3];
// for文
final twiceNumbers = [];
for (int number in numbers) {
twiceNumbers.add(number * 2);
}
↓
// map関数
final twiceNumbers = numbers.map((int number) => number * 2).toList();
おわりに
今回はFlutterでdartのコードを書くときに気をつけるポイントについて書いていきました。コードを書いたあとに記事の内容を見直すことで、より良いコードにしていきたいです!
この記事が気に入ったらサポートをしてみませんか?