同じ変数への代入をなげいてみる修行

$title = htmlspecialchars($title);

このコードのように同じ変数に何かしらの変換を行ったものを戻すコードはよくないと思う。

よく見る例 (PHP)

$email = htmlspecialchars($email);
$password = addslashes($password);
$url = urlencode($url);

このコードのように同じ変数に何かしらの変換を行ったものを戻すコードはよ
くないと思う。

なぜよくないか

  • 変換の有無を見落としやすい
    • 変換後の変数名を変えると見落としは発生しにくい
  • そもそもこれらは出力 (ブラウザに送る、DBMS に送る、外部サーバに送る) のタイミングで変換すべきものであり、一旦変数に入れて持ちまわること自体がおかしい。

「文字列型」のほかに「HTML フラグメント型」「SQL フラグメント型」などがある言語処理系はどうだろう。
「HTML フラグメント型」でないと CGI では出力できないとか、ただの「文字列型」でないと文字列関数に通せないとか。