トップページ > プログラム > 2015年09月12日 > 1g/1FxHg

書き込み順位&時間帯一覧

59 位/167 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000000101



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
ふらっと C#,C♯,C#(初心者用) Part116 [転載禁止]©2ch.net

書き込みレス一覧

ふらっと C#,C♯,C#(初心者用) Part116 [転載禁止]©2ch.net
679 :デフォルトの名無しさん[sage]:2015/09/12(土) 22:57:29.52 ID:1g/1FxHg
素人だけど、そこはサニタイズの一環だと思う。

旧コードだと記述されていないプロパティには値が代入されない。
新コードだと常に全てに代入される。
もし旧コード側で「内部的」なプロパティを持っていて、
それがそこに記述されていないことにより「内部的」であることを保証している場合、
サーバ側でDBの変更があり、名前が偶々被ったらいきなりバグる。
例えば、 id2 というプロパティを内部的にだけ使用していたつもりが、DB側で追加されたとか。

ただ、SampleRecClassはDB側のデータのみとして分離されていれば、この問題は発生しないはず。(※)
或いは、今ある全てのプロパティに対して代入が記述されているのなら、大丈夫。

後は旧コードは必ず固定的にキャストされていること。
SQLを使ったことがないから戻り値とかの知識がないのだけど、SQL側から型付きで返ってくるのなら、
新コードだとDB側の型と一致してしまう。
これだと、DB側で型が変更された時にいきなりバグる可能性がある。
(ただしこの場合はどうせ書き直さなければならないけど)

後は型が全部Objectになってしまうのも少し引っかかるけど、自分だけで閉じているのであれば問題ないはず。
(俺はこの点についてはC#の知識が足りないので断定は出来ない。
VC++ならネイティブ型にキャストとしている場合はアンマネージド側で使っている可能性があるのでやや危険。
ただC#ではこういうケースは無いはず。)

100行もあっても見にくいだけだし、※を確認しながらReflectionにするのはありだと思う。
(ただし素人なのでReflectionを積極的に使うべきなのかは知らない。というか、消極的に使う印象がある)
とはいえ、旧コードはDB変更の影響を全く受けないようになっているから、
この点は注意しておいた方がいい。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。