Cはワンマン向け

だと考えるようになった。
いや、あくまで自分の中ではです。

今、Cで作られたものを参考にしてC++に移す作業をしていたりするんだけれども、
至る所に出現する、

  • void*
  • コールバック
  • 謎フラグ
  • hoge->foo->bar->ptr

ううーん。
これだけをして、ダメというのは何かもしれないけれど、
void*は至る所で何かに化ける。
根底にあるのは汎用ワークだからして、
その場その場で姿が変わる。
メモリマッピングとしてはそれが当然だからして当然なのだが、
型安全性とは真逆。


コールバック、
StateやStrategy風なことをしようとしてコールバックの嵐になるんだけれども、
あっちやそっちやこっちに飛んだりして遷移が読みづらい。
何でもかんでもコールバックで指定すりゃ良いってもんでもない。

謎フラグ、
至るところにあるhoge_flag & HOGE_FOO_BAR、
フラグの名前だけでは何をしているのかわからないよ……。orz
isHogeとかcanHogeとかhasHogeとかならわかるんだけど、
すべて&や|や~でやられるとわからん。


hoge->foo->bar->ptr
指している先がわかるためにはすべて追っていかないとわからない。
やりたいことはわからんでもないが、
hoge->foo_c->bar

hoge->foo->bar
とかあってわからんちん。

で、なぜこういう風になっているかというと、
「書いている本人にはわかるから」
なんだと思う。
確かに書いている人間には、
void*が指す中身は自明だし、
コールバックも熟知しているし、
フラグの意味がわからないことなんてないし、
アロー演算子の連鎖も何のその。

でも、でも、でも、他人にはわからないよね。orz...
読みくだしていけばわかるけど、奥まで辿ってやっと解るようになるわけで、
Cはやっぱりワンマンだ。
ワンマンが許される言語なんだ、って思った。
いや、人によりけりではあるんだけれど、
Cの記述性がこうしたワンマンなソースを生み出すという感じはしてる。
ワンマンが悪い訳じゃない事もあるんだけどね。