//皆で分担してソースを書くと
const int MIN = 0;
const int MAX = 9;
#include <iostream>

struct A {
int hoge(int i) {//A君が値の範囲チェック
if (i > MIN && i < MAX) return i * 3; return i;
}
};

struct B {
int hoge(int i) {//B君も値の範囲チェック
struct A a; if (i > MIN && i < MAX) return a.hoge(i); return i;
}
};

void main()
{
B b;
int i, num = 8;
if (num > MIN && num < MAX)//メイン君も値の範囲チェック
i = b.hoge(num);
else
i = num;
std::cout << i << std::endl;
}

//のような事が頻出するのですが、そもそも誰が値の範囲チェック
//をするべきとか、決まりはあるのでしょうか?