今年も残り僅かですが、最後の最後に絶望的な出来事が発生しました。すっげー、しょうもないネタになってしまうのですが、どうしても誰かに愚痴らないと気が済まないので、お許しください。私はWEB上で、しょうもない愚痴等は絶対言わない主義なのですが、今日のは吐き出さなければ気が収まりません。短い話なので、どうかお付き合いください。


今日、とある開発中の200クラスぐらいあるC++プロジェクトのリファクタリングをやっていたのです。今使っているIDE、EmbarcaderoのC++Builderには、貧弱なリファクタリング機能として、変数名の変更がサポートされています。しかし、貧弱すぎて使い物になりませんでした。


そこで私は、変数名の変更をMIFES(テキストエディタ)でグローバル置換することにしました。疲れていたのか、よくもまぁ思い切ったものです。"format"という変数名を、全て"information"という名前に変更することにしたのです。


変更した動機は、同じような使われ方で"information"という命名をしている部分があり、統一したい思いでした。"format"と"information"って、全然違うじゃん!と思われたかもしれませんが、その変数の目的は、確かにどちらも悪くない命名なのです。あまり気にしないでください。そして、"format"という変数名は、そこ以外に使っていないということは確かでした。


予め話しておくと、プロジェクトのバックアップを取ったのは、なんと今朝08:20でした。この置換を試みたのは、本日22時です。そう、バックアップも取らずにグローバル置換を平気で実行するという暴挙に出たのです。なんということでしょう。


そして、グローバル置換を確認なし(置換しますか?[y/n]的な)で実行中、MIFESに流れていく画面を見ながら、「なんか思ったより置換箇所多くね?」という嫌な予感がしていました。こういうものは大概的中するものです。しかし、先ほども書いた通り、"format"という変数名は絶対に別の部分では使われていません。私の記憶上では!
ここでグローバル検索で一応確認しておくべきだった。


で、結論として何が起こったかと言いますと、"information"の文字列が全て"ininformationion"に変身していました。私は全く状況が理解できませんでした。ぶっちゃけMIFESのバグを疑いました。4年間苦楽を共にした相棒のテキストエディタを疑っていたのです。


しかし、勘のいい私は気付いてしまったのです。

information...








information...?








information...!








information...!?







in[format]ion...!!??



そういうことでした。


まあ、"ininformationion"を"information"にグローバル置換し直すことで、何とか事無きを得たわけですが。いやー、グローバル置換って怖いですね!笑
ではでは!