インクリメントして最大値になったら0に戻す処理

みなさん、どう書いてます?
それは何故ですか?

if 使う方法

// C#
const int max = 3;
int current = 0;
for (;;) {
  Console.WriteLine(current);

  if (++current >= max) { current = 0; }
  // if は使わないけど意味的には同じ
  // current = ++current >= max ? 0 : current;

  string? input = Console.ReadLine();
  if (input == null || input.ToLowerInvariant() == "exit") {
    break;
  }
}

if 使わない方法

// C#
/* 略 */
for (;;) {
  /* 略 */

  current = (current + 1) % max;

  /* 略 */
}

実行結果

0
1
2
0
1
2
0

大昔は if が重かったので、if を使わない方法が優れていたのですが、今はどっちが良いのかは、私は分からないです。

Unreal Engine のマテリアルだと、if ノードは設定がめんどくさいので、使う必要がないなら使わないで済ませます。
コードで見たときにどっちが分かりやすいか?どっちが初心者でも理解できるか?という問題なのかなーと思います。

if 使わない方法を知っていれば、パッと見て分かりますが、どれくらいの人が知っているんでしょう?
知っていれば…という前提があるので、知らない人は理解するのにちょっと時間がかかるということになりますね。
それは良いのでしょうか?悪いのでしょうか?🤔

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です