もくじ
はじめに:hoge反対派
どうも! みなため(@MinatameT)です。
まず、プログラミング関連のサイトでよく見かける「hoge」や「foo」などのメタ構文変数には、私は反対の立場です。
その一番の理由は、初心者が見たときにわかりにくいからです。実際のところ、「hoge」や「foo」に特別な意味があるものだと勘違いしてしまう人もいます。
そのような「初心者に不親切なコード」になってしまわないように、工夫することが必要だと考えています。
「hoge離れ」が進んでいくのは、当たり前だと思います。
hogeやfooは初心者に不親切
私がプログラミング初心者の頃、hogeやfooをネットで見かけて「なんだこれ?」という印象をもちました。
その後、メタ構文変数(氏名で言うところの「山田太郎」、「ジョン・スミス」ですね。)であることを理解できたのは良いですが、「これって初心者に厳しい表現では?」という感想をもったわけです。
実際に、ある学校のプログラミングの授業で、教師が「hoge(ホゲ)」と発言すると、学生側は「ホゲってなんだろう?」となった事例があります。
学生にとって、hogeはよくわからない「難しい何か」なのです。hogeに混乱しているのです。
ですから、「hoge」や「foo」を使うのなら、事前にメタ構文変数の説明をしておくべきです。これで、混乱を予防してください。
読者は初心者かもしれません。hogeなどのメタ構文変数を使うときは、しっかりと説明してください。
メタ構文変数を使うときは「わかりやすく」
メタ構文変数を使うとき
それでは、hogeやfooをどうしても使いたい場合、どうすれば良いのでしょうか。
もちろん、hogeなどを使わないことが一番良いのですが、これらを使う場合は「メタ構文変数」についての説明をしてください。
ちなみに、私はメタ構文変数として、a、b、x、y、i、jあたりをよく使っています。これなら、初心者が見ても「メタ構文変数」だと直感的に理解できると思うからです。
メタ構文変数が使えないとき
ただ、なんでもa、bにすれば良いわけではなく、プログラマーとしては、「その変数の役割」が推測しやすい変数名をつけるように心がける必要があります。
これができなければ、一流のプログラマーにはなれないと思っています。
例えば、体重の変数にhogeを使うのはバカか勉強不足の人です。そうではなくて、weightを使うとわかりやすいですよね。
そもそも、意味のない変数名がメタ構文変数ですから、体重の意味がある変数には、メタ構文変数を使うべきではありません。
ソースコードで理解する:初心者向けのメタ構文変数
それでは、次のソースコード(一部)を見てください。文法はC言語を想定しています。
int hoge,piyo;
double foo,bar;
初心者がこれを見たとき、「intのhogeってなんだ?!」となるかもしれません。同様に、「doubleのfooってなんだ?!」となるかもしれません。
ですから、次のようにコメントを入れると親切なソースコードになります。
int hoge,piyo; //int型の変数hogeとpiyo
double foo,bar; //double型の変数fooとbar
これなら、初心者にもわかってもらえると思います。いかがでしょうか?
これでも不安なら、
int a;
int b;
double x;
double y;
と記述しておくと良いですね。個人的には、これが一番わかりやすいです。
私がhogeやfooの使用を反対している理由は、わかっていただけたと思います。
おわりに
プログラミング関連の記事で多いのが、初心者への配慮が見られないことです。これは残念なことです。
初心者の気持ちがよくわからないようなプログラマーが「これくらいは説明しなくてもわかるでしょ」と記述したコードは、ほとんどの初心者に理解してもらえないと考えて良いでしょう。
そんなコードが検索結果の上位に表示されている場合もあり、「これを見た初心者は余計に混乱してしまうのでは……」と思ったことがあります。
確かに、「int型とは?」や「if文とは?」などと、いちいち説明していると本題になかなかたどり着きませんから、ある程度の省略は必要です。
しかし、hogeやfooを、aやbに置き換える程度なら、誰でもできますよね。コメントもあれば、より親切になりますね。
こういった細かな配慮は、プログラミングを教える側として、決して忘れてはならないことだと考えています。
おまけ:発音について
hogeは「ホゲ」、piyoは「ピヨ」、fugaは「フガ」と(一般的に)読みます。しかし、個人的に
- Hello! I am たかすぎみなため.
- I can do it. あなたもdo itできるよ.
のような「英文の中に日本語が混ざっている気持ち悪さ」があるため、あえて、次のように読んでいます。
- hoge:ホウジ
- piyo:パイヨ
- fuga:フューガ
発音記号についてはよくわかりませんので書きませんが、英語っぽい発音になりそうですよね。英語に詳しい方は「こういう発音のほうが英語に近いよ!」と思っていらっしゃるかもしれませんが……。
どのような発音であっても、私はhogeやfugaを使いませんが、読むときはこのように読んでいる……という個人的なお話でした(笑)。