gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

共通化は二回目

久しぶりの「がるパタ」でございます(笑


「同じ意味を持つ処理」をコピペするような輩は、オロドルインの中腹にある火室サンマス・ナウアにでも放り込んでしまうとしまして。
ちなみに「違う意味だけど同じ処理」の場合に「まとめるかまとめないか」は、議論に値するところではございます(おいちゃんとしては「意味レイヤーで別のメソッドにしつつ」「実装レイヤーで一端一箇所にまとめる」事が多いですが、例外もあります)。


割とあるのが「これは絶対に共通化して後で使うだろうから先に共通化しておこう」っていう発想でクラスとかメソッドとかを増やすケース。
先に言っとく「やめとけ」。


プログラムの世界には「YAGNI」という原則がございます。
You ain't gonna need it、という英文の略語ですな。「どうせ使わねぇよ」って超訳を入れておきます。


「あとで使う」は、大半が使われないものになります。
でも「それを作るために」時間が費やされます。


あぁなんで無駄なんでしょ。
だからがるパタではこう言います「共通化は二回目」。


「あとで絶対にもう一度使うだろう」処理は、そこをまとめて「寄せて」書いて、上下に、大体2〜4行くらいの空改行をあけて、後で「余裕でカット&ペーストが可能」なように、準備だけしておきます。
で「やっぱり予想通りだよ」って状況になったら、自分の先見の明を褒め称えつつ、切り取って共通化すりゃいいんです。


この方法だと「どこまでを切りだそう?」って悩む事もありませんだって「直面している」状況だから、悩みようがないし。
かつ、絶対に「共通化が必要なタイミング」でやってるから、無駄もありません。
ついでに「もし予測が外れた時」も「うん何となくここは1つ固有の処理をしているから、少し見やすくしておいたんだよ」と言い訳がききます B-p


「うまく共通化できない」「どうやってメソッド切りだそう」とお悩みのあなた、是非、一度試してみませんか?