QA@IT
«回答へ戻る

回答を投稿

Dictionaryの性質はkeyによるデータ管理であり、
key自体の間違いを検出するためのものではありません。
なのでinstance[]の性質を除いてしまったらそれはDictionaryとは
いえないのではないでしょうか?
instance[key]=value
の形でkeyに対するvalueの設定が設定済であるかどうかにかかわらず
保証されるのは一般的には便利ではないかと思います。
AddするのかUpdateするのか分からないときにkeyの存在を確認して
AddまたはUpdateを呼ぶ分岐をそのたびに記述しなくて良いのは
Dictionaryの性質からはすごく適していると思います。
keyの間違いというのはプロジェクト固有の性質であり(keyの間違い自体は
多くのプロジェクトで存在しますがそれは共通の間違いなわけではない)一般的な
性質ではないと思います。なので固有の機能を実装するなら新しい
クラスを作るべきであって既存のクラスにその性質を求めるべきでは
ないと思います。AddとUpdateと作ったとしてもどっちを呼ぶかは
keyの正当性チェックをしてdictionary内にkeyが存在しているか
確認して存在しなければAdd,存在すればUpdateというロジックが
多数発生してしまうのではないでしょうか?
例題として提示されたコードではあらかじめ
0*0 ~ 9*9までのキーを設定していますが、keyとして正当なものが有限でなかったら
これは出来ません。整数の二乗というのが正当なkeyの条件なので与えられたkeyに
対してそれが整数の二乗であるかをまずチェックしなければdicにkeyがないからといって
それが不正なkeyとは言えないです。例えば121がkeyとして渡されてもこれは正当なkey
でなければならないのにdicにないため不正なkeyという間違ったチェックが行われてしまいます。
このようにdictionaryにkeyのチェックを行わせるのはテストを省けるほど確実なことには
ならないです。

Dictionaryの性質はkeyによるデータ管理であり、
key自体の間違いを検出するためのものではありません。
なのでinstance[]の性質を除いてしまったらそれはDictionaryとは
いえないのではないでしょうか?
instance[key]=value
の形でkeyに対するvalueの設定が設定済であるかどうかにかかわらず
保証されるのは一般的には便利ではないかと思います。
AddするのかUpdateするのか分からないときにkeyの存在を確認して
AddまたはUpdateを呼ぶ分岐をそのたびに記述しなくて良いのは
Dictionaryの性質からはすごく適していると思います。
keyの間違いというのはプロジェクト固有の性質であり(keyの間違い自体は
多くのプロジェクトで存在しますがそれは共通の間違いなわけではない)一般的な
性質ではないと思います。なので固有の機能を実装するなら新しい
クラスを作るべきであって既存のクラスにその性質を求めるべきでは
ないと思います。AddとUpdateと作ったとしてもどっちを呼ぶかは
keyの正当性チェックをしてdictionary内にkeyが存在しているか
確認して存在しなければAdd,存在すればUpdateというロジックが
多数発生してしまうのではないでしょうか?
例題として提示されたコードではあらかじめ
0*0 ~ 9*9までのキーを設定していますが、keyとして正当なものが有限でなかったら
これは出来ません。整数の二乗というのが正当なkeyの条件なので与えられたkeyに
対してそれが整数の二乗であるかをまずチェックしなければdicにkeyがないからといって
それが不正なkeyとは言えないです。例えば121がkeyとして渡されてもこれは正当なkey
でなければならないのにdicにないため不正なkeyという間違ったチェックが行われてしまいます。
このようにdictionaryにkeyのチェックを行わせるのはテストを省けるほど確実なことには
ならないです。