ゲームプログラマーの寄り道

ゲームプログラマの寄り道

ソースコード公開系ブログ

ソースコード公開系ブログ

マジックナンバーを駆逐せよ!

10回だけ処理をするプログラムを書くとき、こう書いてますか?

10回処理コード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Hoge : MonoBehaviour {
    int value = 0;
    void Start()
    {
    }
    void Update()
    {
        if (value < 10)
        {
            Debug.Log("Play!!");
            ++value;
        }
    }
}

はい、こんな事をしてしまったら、膝蹴りが飛んで来ますね。
https://img.gifmagazine.net/gifmagazine/images/7879/original.gif

なので、マジックナンバーを消してみるとこうなります。

マジックナンバー駆逐

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Hoge : MonoBehaviour {
    int value = 0;
    int number = 10;
    void Start()
    {
    }
    void Update()
    {
        if (value < number)
        {
            Debug.Log("Play!!");
            ++value;
        }
    }
}

こうなりますが、こうするとカウント部分と条件部分で変数が二つになってしまいます。
変数はなるべく、見栄えの部分とメモリの為に増やしたくない。
実際に変数を減らした上でマジックナンバーを使わない方法を考えてみた。

変数減らしたコード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Hoge : MonoBehaviour {
    int value = 10;
    void Start()
    {
    }
    void Update()
    {
        if (-value != value)
        {
            Debug.Log("Play!!");
            --value;
        }
    }
}

こうすると変数も一つで、マジックナンバー警察も来ないというプログラムの出来上がり。
ただ、少し変態的なソースコードになりました。
https://img.gifmagazine.net/gifmagazine/images/647670/original.gif

***募集***
一緒にブログを運営してくれる人募集しています。
主な作業は修理作業です。画像足りなかったら拾ってくるとか、誤字の修正などです。
見出し増やすなど、見た目に関する所お願いします。
Twitterに連絡くれれば反応できます。

しんーーご (@shi_k_7) | Twitter