この汚いコード、明日までに書き直しちゃえ! ? @IT自分戦略研究所
なんというか、書き直したわけではないのですが、新しく機能を追加してバグを生んでしまったというお話です。
機能といっても、渡された引数の中身を見て必要ならエスケープする、という単純な事なのですが。 で、書き直した時は従来の機能を損なわずに変更したつもりでした。 しかし、見事に損なっていたわけです。
エスケープするつもりの無いものまでがエスケープされてしまっていました。
敗因は、面倒くさがって自動的に判別させようとした、という事だろうと結論付けています。 エスケープが必要な場合は、スイッチになる引数を渡す、という処理をすればよかったのだと。 今はそう思っています。
…結局、そのバグは下手に触れないので、呼び出し側で何とかしましたが、いずれは直さないといけないなと思いながら、それでまたバグが…と思うとなかなか無理です。