0
1
SLAPとは(前提共有)
Single Level of Abstraction Principle の略。同一スコープでの抽象レベルはなるべく統一しよう、という原則(間違ってたらすみません)。
static 変数で SLAP を壊すのが納得できない
static 変数はクラスのインスタンスではなく、クラス自体に紐づきます。よって static 変数は他の変数やメソッドよりも一段高い抽象レベルにあります。それなのにクラスの記述中に宣言されるのが気持ち悪く、納得できません。
具体例
「生徒 class」と「学校 class」があり、学校は生徒全員の list を知りたいとします。
このとき「生徒 class」に static で student_list 変数を宣言してよいのか、はたまた「学校 class」の中で student_list 変数を宣言すべきでしょうか。
この学校以外の生徒も存在し得ることだし、抽象レベルという観点でも学校クラスで宣言すべきだと思います。ただし、もし世界に他の学校が無いと知っていたなら、static 変数の方が超単純で超便利です。でも SLAP は壊れます。そもそも学校を singleton にしちゃえば同じじゃない?とも思います。
static 変数はどう割り切って使うべきでしょうか?
回答2件
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。