beiyuen
@beiyuen (ベイユエン)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【UniRx】 ReactiveProperty のインスタンス名に命名規則とかありますか?

Q&A

Closed

以下のようにフィールドを置きましたが、

int hoge;

ReactiveProperty に変更しようと思いました。
普通のint型とは違うことを強調するために、フィールド名も変えて、以下のようにしました。

IntReactiveProperty hogeReactiveProperty;

接尾語的に変数名前の最後に「ReactiveProperty」を付け足しました。

なんか怖い。

上の例ならまだ許せる長さですが、そのうち メチャ長ReactiveProperty が誕生し、「こんなに名前が長いけど、本当にこれで良いのだろうか」とモヤモヤしながら実装を進めるのが目に見えてます。とはいえ、上記の名前の付け方が一般的なら「まぁそういうもんだな」と自分を納得させられるわけです。

実際どうなんでしょう。
皆さんはどんな風に ReactiveProperty のインスタンスに名前を付けていますか?

0

2Answer

.Netになってから型名を変数名のサフィックス・プレフィックスにつけるハンガリアン記法自体が非推奨になっている為ReactivePropertyと名前が命名に入るような命名規則はだいぶ廃れたものだと思っております(動的型付け言語だとまだあるかもしれない)。

❌ ハンガリアン記法は使用しないでください。

このようなプラクティスは現代のIDEやエディタ、特にC#であれば基本的に型はエディタで見れるのでわざわざ冗長な命名規則を使うのは辞めようという考え方から来ていると思います。

私はUnity.UIのビルドインイベントでよく使われる命名である onValueChanged とReactivePropertyを表現するのが好きです
HogeのReactivePropertyなら_onHogeChanged みたいな感じですかね。(型じゃなくて直感的にわかる振る舞いを命名で表現した方がいいかなと思うので)
ただObserveEveryValueChanged もあってややこしいやろ!とかもっとReactivePropertyは機能あるだろ!という批判もありそうなので私も色々聞いてみたいぐらいではあります

逆によろしくないと思うのはよくサンプルコードで見かける _hogeProperty みたいな命名ですね、Propertyっていろんなところで使われるし
なによりビジネスロジックとかゲームロジック側の所謂ドメインに依存する概念でよく使われるので混乱を招くと思います。
Reactiveの方がReactivePropertyのメインディッシュなわけですし・・・

答えになってるか大変不安なんですが・・・どうでしょう・・・

1Like

Comments

  1. @beiyuen

    Questioner

    ご回答ありがとうございます!
    ハンガリアン記法な時点でダメなんですね。勉強になります!

IDEの補完が正しく動作する環境であるならば、

IntReactiveProperty hoge;

でも十分だと思います。
(ただ、サンプルプログラムなどIDEを経由せずにWebや紙面などで読む必要があるコードなどでは冗長ですがhogeRPなど変数名から読み取れるような記載をあえてすることはありますね)

一方で、IObservable<T> については、Observableの長さが「1つ」なのか「複数なのか」で扱い方が変わってしまうため

IObservable<T> HogeObservable { get; } // OnNextが複数回飛ぶ
IObservable<T> FugaAsync{ get; } // OnNextが1回だけ飛ぶ

など、~Observable / ~Async で書き分けるという小技もかつてはあったりしました。
(今は単発非同期処理ならTaskを使うので、単発Observableをほとんど見かけなくなりましたけど)

1Like

Comments

  1. @beiyuen

    Questioner

    ご回答ありがとうございます!

    説明用に敢えて RP をつけることもあるんですね。ただ、自分で書く分なら hoge だけでも十分なんですね!

Your answer might help someone💌