Gaming Life

一日24時間、ゲームは10時間

C# if文なしにプロパティで数値に上限/下限を設定する

月とか時間とか、数値に上限下限を設定したいとき、素直に実装するならif文使ってこんな感じにやる。

int month;
void setMonth(int value)
{
    if(value <= 1){
        month = 1;
    }else if(value >= 12){
        month = 12;
    }else{
        month = value;
    }
}

これじゃあやってることに対してコードが冗長すぎ。

解決策何かしらあるだろうなーと思って調べてみたら、Mathf.Min()やMathf.Max()を使えばできるらしいことが判明。折角のC#なのでプロパティを使ってもっとスマートに書いてみる。

public class Month
{
    //packing Field
    private int monthNum = 1;
    public int MonthNum
    {
        get { return monthNum; }
        set { this.monthNum = Mathf.Min(12, Mathf.Max(1, value)); }
    }
}

シェーダー芸やってる人やある程度プログラム書いてる人に取っちゃ当然の書き方なのかもしれないが、知らなかったので自分用にメモ。

まあClamp使えばいいんですが。