毎回趣味ネタだとゲームプログラマらしくないので、前回のK.K氏のコラム「再利用性」に食いついてみます。
大体はまとめられているので、補足的な内容になるかと思います。
(というか、勉強になった!まだ読んでない方はぜひ)
個人的立場を明確にすると、「再利用大好き!」です。
なぜなら自分でコードを書かなくて良いし、人のソースコードを見るのもいじるのも楽しい。
再利用を促進するコードを書いていければ、と思っています。
自分の好みはさておき、
再利用と無縁なプログラマは少ない。
例えば、ライブラリやミドルウェアを使用するとき、すでに再利用していると言えます。
だから、ほとんどの現場にとって、再利用とは、自身を含む同じ組織内での話に狭められる。
同僚が作ったエフェクトクラスを使いまわす?どうする?
みたいな判断です。
では、同じ働きをするプログラムを再利用するのとイチから作るのとでは何が違うだろうか。
個人的には「作業内容が違う」ことが一番のポイントだと思います。
再利用するならコード読む時間が多くなるし、しないなら書く時間が多くなる。
その結果、
読むスキルが上がるか、
書くスキルが上がるか。
再利用の技術が上がるか、
初回実装の技術が上がるか。
以前のコードを書いた人とのコミュニケーションが進むか、
己の技術に特化するのか。
ざっと上げても、上記のような違いがあります。
つまり、個人の視点で見ると、どの能力を磨くかという選択の問題になります。(※1)
ゲームでもありますよね。
スキルポイントがたまってどこに振るか、みたいなの。
それと似たような感じがします。
理想としては、再利用することで一瞬で仕事が解決して、暇でしょうがない状態。
しかし、そんなことはあまりなく、再利用してもバグが潜んでいたり追加変更があったりで、それなりに工程はかかります。
だから、よほどコストに差がないかぎり、好きなほうを選べば良いと思います。
もちろん、再利用を採用した以上、そこから発生するいかなる事態も自身の責任になります。
ときどき前任者を持ち出してしまいますけど、それは再利用側が未熟だからです。
※1
もちろん、どちらを選んでも、時間内に期待されたクオリティの成果物ができるという前提です。
また、全体の方針などもあると思います。
ただし、教育部門がない組織などでは、放っておいても成長する人材を求めているのでは。