今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

同じ情報を複数箇所に持たせないように気をつける

プログラムの試験をしていたときのこと。ある部分の設定を変更して動作確認したところ、設定が反映されていない不具合があった。画面上で確認する限りでは、新しい値に変更されているのに、動作を見ると、設定値を変更する前の値で動作していることが分かる。
コードを確認してみたら、Model オブジェクトが持っている設定値を Controller のオブジェクトに渡している。同じ意味を持つ値を、Model オブジェクトと Controller オブジェクトの両方で持っていた。
画面上から設定を変更したとき、Model にはその値が反映されていたが、Controller にその値を引き継ぐ処理が不足していたために、Controller は古い設定値のまま動作していたのだった。
同じ値を複数箇所で持つと、このようなバグの原因になりやすいので、Controller のクラスからこの属性を削除し、Model が持つ値を参照するようにコードを変更して対策は終了。動作確認でも正常動作が確認できた。
初歩的なミス。反省。