新人OJTネタです。
製品の改修で、ある機能についてエンハンスを行うことになりました。
今までは、製品のアップグレード時に、設定情報などを更新するという機能があり、具体的には、不要なファイルは削除して、今回のバージョン用のファイルを配置するという動作。
つまり、今までは「削除」と「配置」が必ずセットで動くという実装になっていました。
今回はその機能を一部回収して、「削除」だけが動くようにしたいという要望があり、その機能を実装することになりました。
ちょうどいいのでその作業を実施(つまり実装を)してもらおうとなりました。
そのために、既存の実装を調査、それをもとに改修作業をしている時のこと。
削除用のオプションを追加して、既存の関数を直そうとしていましたが、なかなか作業が進まず、どうしたのかな?ということで聞いてみると、どう直していいかわからなくて困っているとのこと。
さらに詳細を聞いてみると、関数のパラメータにコピー先のファイル情報も渡されていて、今回の削除機能では、そのコピー先の情報が空で渡されるからエラーになるので動かない…。
なので、コピー先の情報をどう作りだせばいいかで悩んでいたようです。
聞いたときに思わず「えっ?!」と思ってしまいました。
削除処理だけ行えばいいので、当然コピー先の情報なんて要らないはず。
なのに、なぜそのコピー先の情報を作り出そうとしているのかと。
なぜそう解決しようと思ったのかと。
もちろん元の処理を流用するのはかまいませんが、それを丸ごとパクって直そうとしていたようです。
いやいやいやいや…と。
結局、解決方法として、元の関数を改造するのではなく、別の関数を作って、渡すパラメータも変えればいいじゃんと。そして呼び出しもとでオプション判定をして呼び出す関数を振り分ければいいのでは?と。
そういうことを会話したらあっさり解決。
解決方法や考え方が思わぬ方向に行ってしまっていることもあるので、なかなか進まないときは、思考ロックしている可能性もあるので、定期的にヒアリングしてどう考えているかを考えるのも大切ですね。