根本解決が必要なわけ

これは必ずしもプログラミングに限らないかもしれませんが、プログラミングについて書きます。

「なんか挙動が変なので、とりあえずこんな感じで直しておきました。」

開発中のプログラムに何か問題があった時に、チームメンバーに「これを直しておいてください」とお願いすることがあります。1時間くらい経った頃に、「なんか動きが変なので、うまく直せなかったけど、とりあえず動くようにはなりました」みたいな感じで返ってくることがあります。
要するに理想的な解決方法のイメージはあるけど、それがうまくいかないので、しょうがなく「良くない」とは分かりつつも正しくない方法で無理やり直した、ということなんです。
が、これはあまり良くない。

確かに正しく使っているのに動かないことはある

確かにモジュールのバグなどで、正しく使っていても正しく動かない場合はあります。

このように動かないモジュール(赤)を、正しい使い方(青)で使っていても、結果は正しく動きません。

根本的な原因が残ってしまう

根本解決せずに、無理やり修正するということは、こういうイメージになります。

理想的な解決策がうまくいかない理由は場合によりますが、それはプログラムやライブラリのバグが原因かもしれないし、自分の仕様に対する理解が誤っているからかもしれません。
いずれにしても、「とりあえず」で修正をすることは、この根本的な原因が解決されないので、近い将来に別の人が同じ罠にハマることになります。別の人とは限りません。近い将来に自分がまた同じところでハマるかもしれません。

それどころか問題を増やしてしまう

問題が残るだけなら、プラスマイナスゼロのようにも思いますが、理想的な解決のイメージからかけ離れた「ツギハギの修正」をすることになるので、そこに別の問題を残すことになります。
本来書くべきところに書いても正しく動かないので、本来書くべきでないところに書いて、とりあえず動くようにした、という場合です。この場合、本来書くべきでないところに書かれたコードは、近い将来に誰かがハマる地雷になります。

根本的に解決しよう

そういうわけで、問題があった時は根本的に解決するのが良いと思います。

経験的に、「おかしいなーおかしいなー」と思っている時は、言語やフレームワーク、ライブラリに対する自分の理解が間違っている場合が多いので、根本原因を知ることは、自分の誤った理解を正すことになります。この機会を逃すといつまでも同じ罠にハマり続けます。

コメント

タイトルとURLをコピーしました