ターゲットをn個の数値と比較するコード

if文で、if (tag == col) といったコードはごく普通に書きます。
これが仕様変更により、比較対象が1つではなく、n個になることもよくあります。
コードを書く側が実現したいことは、

  • できるだけコードを変更したくない
  • プログラムの流れ的に、tagを評価している式と分かる実装にしたい
  • 比較対象は綺麗に列挙したい

といった内容があります。

そこで、こんな形で解決してみました。

int [] cols = {1,2,3};
if (cols.Any(x => x == tag)) ...

等号の左右の位置関係が変わるのが生理的に気持ち悪いかどうかですね。
(もちろん、ひっくり返して書くこともできますが、ラムダ式の記述パターン的にこちらにしてみました。)
変更箇所は少なく抑えられていると思います。

  1. No Comments