Riverpod の Provider 命名手引き

mono 
Flutter 🇯🇵
Published in
15 min readFeb 23, 2022

--

Photo by Austin Kirk on Unsplash

Riverpod の Provider の命名は何が良いのか迷うことがけっこうあると思うので、自分が良いと思う命名とその理由などを述べていきます。

ソースコードドキュメントAPIレファレンスなどを主に参考にしつつ、自分でしっくりくるルールとして整理した感じです。また、サンプルコードのため左辺での型明示をしている箇所がありますが、通常のコードでは省略が推奨です。

以下、Provider と 表記しているのは https://pub.dev/packages/provider ではなくhttps://pub.dev/packages/riverpodProvider クラス群を指します。

普通のProviderの名前

結論から言うと、「Provider名は基本的には対象の値名に Provider 接尾辞を付けた名前にするが、必要ないなら接尾辞省略でも良い」です。

例えば、以下のような認証周りの処理を担う Authenticator クラスがあったとします。

class Authenticator {
const Authenticator(this._read);
final Reader _read;
Future<void> signIn() {}
Future<void> signOut() {}
}

このAuthenticatorの依存解決をするProviderの名前としては、概念的にはそのまま authenticator で良いと思っています。

final authenticator = Provider((ref) => Authenticator(ref.read));final someProvider = Provider((ref) {
//利用側から見て違和感無し
ref.watch(authenticator).signIn();
});

しかし、そうすると他で watch (や read )をして一旦変数に入れようとした時にそれを同じく authenticator としようとすると名前被りでコンパイルエラーになってしまいます。

final someProvider = Provider((ref) {
//コンパイルエラー
final authenticator = ref.watch(authenticator);
});

というわけで便宜上、基本的には機械的に Provider という接尾辞を付けるのがお勧めです。

--

--