QA@IT
«回答へ戻る

"その他に..."以下を追記

298
 `dic[49]`の代わりに`dic[7*7]`と書くか、定数を定義して`dic[fortyNine]`と書くと思います。
 
 また、含まれるキーの内容が固定的に決っているなら、Dictionaryを使わずに独自の構造体を定義するなどすると思います。
+
+
+その他に、イミュータブルな(不変な)戦略でプログラムを組むという方法もあります。
+これだと、追加も上書きも発生しませんから、根本的なレベルで解決します。議論にすらなりません。
+
+今回の質問は、「updateメソッドにメリットやデメリットがあるか?」と言った内容になっていますが、それに対する私の答えは、「updateメソッドは不要」です。
+特にデメリットがあるからという訳ではなく、それが無くても問題が解決できるからです。
+
+しかし、もしunibonさんが、updateメソッドがどうしても必要となるような前提条件を設定するならば、そのときは前提条件により「updateメソッドは必要である」という結論になると思います。
+Dictionaryのサブクラスを作って、updateメソッドを実装すれば問題は解決します。

サンプルコードの中に、「49と47を間違えて...」といったことが書かれていますが、
今回の話は、ソースコードの誤入力防止の話なのでしょうか?

そのサンプルコードのように、キーは整数の2乗であるという仕様ならば、
dic[49]の代わりにdic[7*7]と書くか、定数を定義してdic[fortyNine]と書くと思います。

また、含まれるキーの内容が固定的に決っているなら、Dictionaryを使わずに独自の構造体を定義するなどすると思います。

その他に、イミュータブルな(不変な)戦略でプログラムを組むという方法もあります。
これだと、追加も上書きも発生しませんから、根本的なレベルで解決します。議論にすらなりません。

今回の質問は、「updateメソッドにメリットやデメリットがあるか?」と言った内容になっていますが、それに対する私の答えは、「updateメソッドは不要」です。
特にデメリットがあるからという訳ではなく、それが無くても問題が解決できるからです。

しかし、もしunibonさんが、updateメソッドがどうしても必要となるような前提条件を設定するならば、そのときは前提条件により「updateメソッドは必要である」という結論になると思います。
Dictionaryのサブクラスを作って、updateメソッドを実装すれば問題は解決します。

サンプルコードの中に、「49と47を間違えて...」といったことが書かれていますが、
今回の話は、ソースコードの誤入力防止の話なのでしょうか?

そのサンプルコードのように、キーは整数の2乗であるという仕様ならば、
`dic[49]`の代わりに`dic[7*7]`と書くか、定数を定義して`dic[fortyNine]`と書くと思います。

また、含まれるキーの内容が固定的に決っているなら、Dictionaryを使わずに独自の構造体を定義するなどすると思います。


その他に、イミュータブルな(不変な)戦略でプログラムを組むという方法もあります。
これだと、追加も上書きも発生しませんから、根本的なレベルで解決します。議論にすらなりません。

今回の質問は、「updateメソッドにメリットやデメリットがあるか?」と言った内容になっていますが、それに対する私の答えは、「updateメソッドは不要」です。
特にデメリットがあるからという訳ではなく、それが無くても問題が解決できるからです。

しかし、もしunibonさんが、updateメソッドがどうしても必要となるような前提条件を設定するならば、そのときは前提条件により「updateメソッドは必要である」という結論になると思います。
Dictionaryのサブクラスを作って、updateメソッドを実装すれば問題は解決します。

回答を投稿

サンプルコードの中に、「49と47を間違えて...」といったことが書かれていますが、
今回の話は、ソースコードの誤入力防止の話なのでしょうか?

そのサンプルコードのように、キーは整数の2乗であるという仕様ならば、
dic[49]の代わりにdic[7*7]と書くか、定数を定義してdic[fortyNine]と書くと思います。

また、含まれるキーの内容が固定的に決っているなら、Dictionaryを使わずに独自の構造体を定義するなどすると思います。

サンプルコードの中に、「49と47を間違えて...」といったことが書かれていますが、
今回の話は、ソースコードの誤入力防止の話なのでしょうか?

そのサンプルコードのように、キーは整数の2乗であるという仕様ならば、
`dic[49]`の代わりに`dic[7*7]`と書くか、定数を定義して`dic[fortyNine]`と書くと思います。

また、含まれるキーの内容が固定的に決っているなら、Dictionaryを使わずに独自の構造体を定義するなどすると思います。