2013年3月9日土曜日

ウンコードを鑑みる その2+3



フラグを逆にしたり変なifにしたり。
http://unkode-mania.net/view/51362449ff22d3ce02000000

複数のフラグやら、多段ifを多用する実装は、状態遷移をうまく表現できてないんだと思う。ただそもそもの話、C++に「BOOL型」は存在しないので、こういうことをやらかす人種は、enumに統一した方が無難じゃなかろか。

日本語メソッド名
http://unkode-mania.net/view/5029e1a9eef2c7f861000008

意見が真っ二つに別れてますが、肯定派にたいして「動けばいいと思ってるんじゃ」ってのも失礼な話でしょ。もちろん思ってませんよ。日本語の解りやすさを全面肯定してるだけです。

Javaから見れば特異なことかも知れませんが、tclにはフツーです。ひょっとしてlisp族でもできるんじゃないかな。だから「識別子が英単語でなければならない」は感覚が古いとは小生も思います。

更に、「要件定義者も、プログラムを書けた方がいいんじゃなかろか」という別の要件もあり、プログラム初心者にとっつきやすくなるネタは歓迎します。

http://unkode-mania.net/view/5133e630ff22d3b640000001

結構なベテランでもヤりますね。正直。Windows畑の人に多い気がする。ええ、偏見です。
引数の省略を全部指定してるところを見ると、C++/Javaからの移行組で、オーバーロード?に対しての、引数の省略を誤って理解してるんじゃないかと思います。

http://unkode-mania.net/view/502e55df81376aba02000003

このプログラムの本質的問題は、

  • flagと言いながら実は多値
  • get_flag_2010_04()の戻り値と比較してしか判定できない。
多値の値をもつものをフラグと呼んでは断じていけません。倒したり立てたりするから「旗」なのです。まあそんなミクロな話はおいといて。
このプログラムの意図は、flagの値をデコードすることの様ですね。そこまで鑑みると、これはC/C++の、intを色々兼用する言語での、生活の知恵に見えてこないでもないです。折角const定義しても、使わなければ元の木阿弥です。それよりは、このケッタイナ実装の方がまだ「値の理由が判るかもしれない」。

http://unkode-mania.net/view/5131df75ff22d3be40000007
なんでコレが駄目なのか判らない。統一のメカニズムですべてのページが表示できたほうが楽でしょう?それがフレームワークでは?

http://unkode-mania.net/view/5129aaaeff22d35204000000
短くしようという「意志」はなくすべきではありません。断言しますが、まったく同じ処理をするためのものであるなら、短いプログラムは、長いプログラムより優れています。
マズイのはやはり"flag"。この名前が出てくるプログラムは大抵マズイです。flag=trueなら、sizeを4倍するとか、意味判りません。上位関数はなにをやってるのか?
これはひょっとして、2番めの引数は"size"じゃなくて”length"で、※つまりバイト数指定じゃなくて「容積」指定3番目の引数は"flag"じゃなくて"is_long"なのでは? ※つまり1個あたりのサイズの切り替え
って言うかbufferSizeをダンプしてみりゃ判るでしょ。もしかして組み込みなのか?単体テストもしないでブッつけ本番?