元のプログラムでJSONなどの外部データから得られたHashをそのまま利用していたら、そのデータが複数のモジュール間を行き来するようになった。モティベーションHashキーのリテラルが複数モジュールで記述されるためスペルミスがあってもわかりにくい。外部データで値としてnilが含まれることを前提している場合、キー名の書き間違いによるnilなのか、値がnilなのかの区別ができないためである。キー名の書き間違いはプログラムエラーとして検出したい。解決方法:HashからStructへ変えるStructは、属性名をキーとした[]記法もできるため、仮に修正漏れがある、あるいはモジュール修正の時期によってStructへの記述変更したモジュールとHash記法のままのモジュールの混在が可能。