そのときの最大値が無効値ってちょっと頭おかしいんじゃないの?
とか思った件があった。
どういうことかというと、
enum {
HOGE_FOO_ID00
HOGE_FOO_ID01
....
CHR_ID_MAX,
};
みたいな定義がある。
キャラクタのID定義だと思ってくんさい。
驚いたことに、このCHR_ID_MAXを「無効値」として扱う糞文化がある。
ぽかーん、だよ、ぽかーん。
どうしてって?
CHR_ID_MAXって、キャラクタが増えたら変わる値でしょ?
変動値を無効値にしてどうすんの?
アホか?
困ったことに、これはセーブデータにも書き込まれたりする。
アホか!!!
開発中にキャラクタが増えるだけでセーブデータが使えなくなる。
だって、
セーブした時点での無効値は、
キャラクタが増えたあとでは有効値になっちゃうんだぜ?
例えば、
ITEM_ID_MAX
を無効値にしていて、アイテムが増えた場合、
たまたま、ITEM_ID_MAXの値と同じ値を持ったアイテムが、
道具箱の中には一杯になるんだぜ?
\^o^/オッチャワーン
アホにも程があるだろ。
どこのどいつだ、こんな糞を考えたのは。
正直……さ、-1でいいんじゃね?
INT_MAXとかでも良いけどさ……。
無効値が有効値に化けるってありえなくね?
もう変更不能だし、泣くぜ!