面白い議論があったので、メモメモ。
今、MVCモデルで、コントローラー部分はフレームワークになっていているものとする。
表示をJavascriptで行っているのだが、ある変数に
"null"という文字列が入ってくる。
この現象は、あるSQLを発行したとき、Selectで指定する1つの数値項目(valとしよう)がnullの
ときに、このようになり、SQLでselectする際nullだったら空文字を返すように書き換えると、
空文字になるようだ。
このとき、画面上にnullという文字列が表示されないようにしたい。
方法としては
(1)view側で、"null"という文字列が来たら空文字に変換する
(2)SQLでvalがNULLのときに空文字に置き換えるようにする
2通り考えられる(ハリウッドの法則があるので、ここでコントローラーはいじれないものとする)
どちらがよいか?
別に(1)でも(2)でも、どちらでも良いのだが、問題なのは(2)と答えた人が、なぜ(1)の修正をするのかを考えず、ぼろくそにけなし、肝心な(2)で行うべきテストをしていないことがある点だ。
(2)は、nullを空文字に変えてしまう。もともとvalは数値項目なので、型が変わってしまう。
そのため、nullのときは、例外処理、そうでないときは、四則演算処理のようなことを、
コントローラー内で行っていると、おかしなことが起こるリスクがある。
それに対して(1)は、表示部分Vだけの処理なので、コントローラーCに影響を与えることが
まずない。つまり、(1)の修正は、修正が影響する範囲を最小化したいために行っている修正
である。
したがって、(2)の修正を行った場合、コントローラーでnull判別している処理が無いか
どうか、回帰テストを行う必要がある。これを忘れると、null判別しているところで、バグが
入る危険性がある。
影響範囲は結構重要なことなんだけど、不用意にモデルをいじることがあるので、注意したほうがいい。
一方、ビューは、いじっても、影響が限定的なことが多い。
今、MVCモデルで、コントローラー部分はフレームワークになっていているものとする。
表示をJavascriptで行っているのだが、ある変数に
"null"という文字列が入ってくる。
この現象は、あるSQLを発行したとき、Selectで指定する1つの数値項目(valとしよう)がnullの
ときに、このようになり、SQLでselectする際nullだったら空文字を返すように書き換えると、
空文字になるようだ。
このとき、画面上にnullという文字列が表示されないようにしたい。
方法としては
(1)view側で、"null"という文字列が来たら空文字に変換する
(2)SQLでvalがNULLのときに空文字に置き換えるようにする
2通り考えられる(ハリウッドの法則があるので、ここでコントローラーはいじれないものとする)
どちらがよいか?
別に(1)でも(2)でも、どちらでも良いのだが、問題なのは(2)と答えた人が、なぜ(1)の修正をするのかを考えず、ぼろくそにけなし、肝心な(2)で行うべきテストをしていないことがある点だ。
(2)は、nullを空文字に変えてしまう。もともとvalは数値項目なので、型が変わってしまう。
そのため、nullのときは、例外処理、そうでないときは、四則演算処理のようなことを、
コントローラー内で行っていると、おかしなことが起こるリスクがある。
それに対して(1)は、表示部分Vだけの処理なので、コントローラーCに影響を与えることが
まずない。つまり、(1)の修正は、修正が影響する範囲を最小化したいために行っている修正
である。
したがって、(2)の修正を行った場合、コントローラーでnull判別している処理が無いか
どうか、回帰テストを行う必要がある。これを忘れると、null判別しているところで、バグが
入る危険性がある。
影響範囲は結構重要なことなんだけど、不用意にモデルをいじることがあるので、注意したほうがいい。
一方、ビューは、いじっても、影響が限定的なことが多い。