よく分からない命名

レガシーのシステムで多いのが、

ナニスルノコレー?
ナンノ変数ナノー?
 
といった関数名、変数名の数々。
今回は、そういった命名についてです。


さて、実際に経験したプログラムの例を見てみましょう。

public object F0233(int a, bool det) {
    P1011.S0104(a, true);
    Return P1011.F0108(a, det);
}
 
ナンジャコリャ。
 
というのがパッと見て誰もが思うことだと思います。
実際、レガシー(ホストやVB6、.net framework 1.0などの昔からある古いシステム)を見ていると、多くがこのような命名をされていて、しかも解読表も何もない、パッと見て奇跡的なつくり(褒め言葉ではない)を未だに採用し続けています。
 
そもそも、ウイルスやスパイウェアなどで解析者を手こずらせるような目的ではないのに、このようなよく分からない難読化の意味は、後の保守にも、引継ぎにも時間が掛かる一方でまったくメリットはありません。
 
では、分かりやすくするには、どうしたら良いのか。
たとえば、以下は先ほどのソースを修正したものです。
 
public object GetRow(int handle, bool defaultValue) {
    ListPage.SaveParam(handle, true);
    Return ListPage.GetRow(handle, defaultValue);
}
 
まだ、これなら何となく行を取って来たいんだなーと、やりたい事が見えてきました。
このように、我々一般人(?)が読める形になれば、判読に無駄な時間を割かずに済みますし、ぜひとも書いて欲しいと願っています。。。