読者です 読者をやめる 読者になる 読者になる

良い変数名を使うべき,でも変数名は CIL に残らない

.NET

LINQ 依存度の高いコードを Reflector for .NET で「戻して」みると,これで難読化は十分じゃないかという気もしてきたり*1.てかまあ var とか不等号の向きとかでみんなが言っている「可読性」って,所詮「わたしの戦闘力は530000です。ですがもちろんフルパワーであなたと戦う気はありませんからご心配なく……」 みたいな話だしなぁ.
ちなみに CIL の仕様上,メソッド引数の名前はコンパイル後のメタデータに残せますが,ローカル変数の名前は残りません.ただし PDB ファイルにはローカル変数の名前も残せて,Reflector for .NET はその情報も利用して逆コンパイルを行っています.Reflector のメニューから,「View」→「Option」→「Show PDB Symbols」をオンにして (デフォルトでオンなはず),PDB ファイル有り無しでの Disassemble 結果を見比べてみると面白いかも.

*1:せめて Anonymous ほにゃららがほんとに「無名」ならまだましなんでしょうが