ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

なかなか思った通りの動作に修正できなくて、なんとかなったのは状況が変わって思いつけたから

不具合修正のために、特定の条件でのみデバッグ用のログ出力を行うようにして、原因を探っていきます。
処理を行っている間に、現象とデバッグ用のログ出力を比較しながら検討してます。
処理が終わって新たなデバッグ用のログ出力から、原因がわかるのか、さらにデバッグ用のログ出力を追加すべきか考えます。

数度繰り返した後に、やっと原因に気がつきました。
原因に気がついて、ロジックの修正をしようと考え始めると、共用している既存のメソッドのままでは、動作を正しく直せなさそうに感じます。
まずは動作を正しくするために、既存のメソッドを元に新しいメソッドを作成しました。

動作を確認すると、特定の条件で予定した通りに動作しません。
どうしてかと考えて、ロジックを変えてみますが、期待した通りの動作をしません。

時間はどんどん過ぎていき、焦りながら考え、やっと原因がわかりました。
原因への対処をし始めると、既存メソッドの修正も必要となり、修正箇所が多くなります。

このまま既存メソッドも含めて修正するという方法を取るべきか、既存メソッドに影響を与えないけれど、後々わかりにくくなる修正方法を取るべきか、決められず時間切れとなりました。

悩んでいる
unsplash-logoMichal Vrba

思いつけたのは状況が変わったから

駅に向かって歩きながら、帰宅してお風呂に入りながら、新しいメソッドの不具合の対処を考えていたら、条件分岐を増やして戻り値を変えれば、対処できるのではないかと気がつきました。
思いついた内容であれば、既存のメソッドの修正も不要で、後々わかりにくくなる修正もしなくて済みそうです。
以前書いた、状況が変わったことで思いつけたようです。
ajya.hatenablog.jp

思いつきを実際にロジックに反映した結果、予定通りの動作をするようになりました。


今回は切羽詰まっていたはずなのに、会社にいる間に思いつけませんでした。
ajya.hatenablog.jp
切羽詰まらないようにするのも当然ですが、切羽詰まったときに思いつけないのは、状況の変化が必要という信号なのかもしれません。