私はしばらくの間、JavaScriptコードにサーバー側のタグを埋め込むことに反対していましたが、今日、納得がいかないように思われた開発者によってその場に置かれました。
問題のコードはレガシーASPアプリケーションでしたが、ASP.NETまたはPHP(たとえば)にも同様に適用できるため、これはほとんど重要ではありません。
問題の例は、ServerSideコードで定義した定数の使用を中心に展開されています。
'VB
Const MY_CONST: MY_CONST = 1
If sMyVbVar = MY_CONST Then
'Do Something
End If
//JavaScript
if (sMyJsVar === "<%= MY_CONST%>"){
//DoSomething
}
これに対する私の標準的な議論は次のとおりです。
- スクリプトインジェクション:サーバー側のタグには、JavaScriptコードを破壊する可能性のあるコードが含まれている可能性があります
- ユニットテスト。テスト用にコードのユニットを分離するのが難しい
- コードの分離:Webページのテクノロジーを可能な限り分離する必要があります。
これを行う理由は、開発者が2か所で定数を定義する必要がないようにするためです。彼らは、それが自分たちが制御した値であるため、スクリプトインジェクションの対象ではないと推論しました。これにより、(1)の正当性が「標準を単純に保つように努めており、例外ケースを定義すると人々が混乱する」という理由になりました。
ページ自体がHTML、JavaScript、ASP.NET、CSS、XMLの恐ろしい融合であったため、単体テストとコード分離の引数も水を保持しませんでした。このページに含まれる予定のコードは、単体テストできない可能性があります。
そのため、状況に応じて、コードが変更されたと主張するちょっとした衒学者のように感じました。
私の推論を支持するかもしれないさらなる議論はありますか、それとも私は実際、この主張に少し衒学者であるのですか?