static修羅道:その変数、本当に new する必要ある?

0005_static修羅道 learn

“staticって何か便利らしい。でも、なぜ付けるのかは説明できない”
“ユーティリティクラス?定数?たまに見かけるけど、仕組みは知らない”

──そんな「なんとなくstaticを使ってる状態」で止まってる Java 初学者に向けて、
この「static修羅道」では、10のステップで段階的に static の構造と思考を掘り下げていく。


キーワードは:

まず、日本語で考えろ
考えたら、コメントを書け
コメントに従って、コードを書け
staticを付けるかどうか、それは「設計」の話だ
自分で説明できるまで、クラスとインスタンスの関係に向き合え


このシリーズについて

この「static修羅道」は、javadrill.tech で出題してる問題の解説版。
問題を出してるのも、解説してるのも──オレ。
tesh って名前でやってます。

javadrill で問題を読んで、
ここ(justkeeptyping.baby)で、書けるようになる。


ステップ構成

Step01:static変数は共有される
Step02:staticメソッドは new しなくても使える
Step03:インスタンス変数との違いを可視化せよ
Step04:定数保持クラスを作れ(public static final)
Step05:ユーティリティクラスを構築せよ
Step06:static初期化ブロックの意味を掴め
Step07:インスタンス生成とともにIDを連番で振れ
Step08:staticからインスタンス変数は見えない
Step09:個別の状態と全体の状態を分けて記録せよ
StepFinal:全体の頂点を、個人の更新で塗り替えろ


// tesh:
// この10ステップが終わったとき、
// おまえは static を「便利そうだから付けとく」っていう曖昧なノリじゃなく、
// 設計の意図として使い分ける力を手に入れてる。
// 
// static は省略じゃない。共有か、個別か──設計の選択肢だ。
// 
// つまづくかもしれん。でも、構造さえ見えてれば、何度でも戻ってこれる。
// 
// だからまずは──
// 
// Just keep typing, baby.
// 意味は、あとからついてくる。