リーダブルコードの前に考えておきたい!
リーダブルコードとは、できるだけ読みやすいコードを書くためのTipsが集まっています。
リーダブルコードを意識してコードを書きたいけど、まずは何から始めれば……という人向けに、リーダブルコードを意識する前に考えておいてほしいことを記事にしてみました。
読みやすいのは?
int hensu = 10;
//2乗した値を求めるために同じ変数をかける
hensu *= hensu;
std::cout << hensu << std::endl;
int value;
//2乗した値を求めるために同じ変数をかける
value *= value;
std::cout << value << std::endl;
全く同じ処理をしている2つのコードを見比べて、どちらが読みやすいと感じますか?
ここで「B」と即答できるのなら、リーダブルコードにすぐ馴染めるのではないかと思います。
単純な処理で全く同じ処理をしているのに、「A」と「B」では読みやすさに雲泥の差があると思いませんか?
何が違うか。変数名など、自分で名前を決められるものを英語にしているか、日本語にしているか。これが違うだけです。
リーダブルコードを意識する前に、まずは変数名や関数名は絶対に英語で命名するように意識するべきです。
その理由を以下に示しますので、英語以外でコードを書いてしまっていた!というアナタは、これから是非英語でコーディングすることを心がけてみてください。
英語で命名するべき2つの大きな理由
1. 日本語のローマ字と英語でつづりが同じなのに意味が違う言葉は多い
先の例では非常に単純なコードを示しましたが、コードが長くなってくると変数名や関数名を日本語にしたコードは非常に読みづらいです。
それは、標準関数が英語で並んでいる中に日本語が混ざるとそれらが浮いて見えますし、あとからコードを読んだ時にアルファベットの羅列が英語か日本語かという判断を迫ります。
というのは、例えばあるゲームのソースコードに以下のコードが入っていたとしたらどうでしょう。
bool make = false;
// 中略
if (hp < 0) make = true;
もし、「コードが英語で統一されている」ということがわかっていれば、これはhp
が0になった時、何かを生成するフラグを立てるコードであるとわかるでしょう。
しかし、もし他のコードに日本語が混ざっていたらどうなるか。そうなった時、make
が"負け"を意味する変数である可能性が浮上します。
後からコードを読んだとき、このmake
が何を意味するかを判断しなければならず、コードが読みにくくなる原因になります。
make
以外にも、英語と日本語ローマ字のつづりが同じなのに意味が違う言葉は多いです。
標準関数が一般的に英語で統一されていること、また一般的にコメント以外のソースコードにASCII文字(アルファベット、数字、半角記号)以外を使えないことを考えれば、英語で統一することが妥当といえます。
2. そのコードを日本語圏以外の人が絶対に読まない保証はない
例えば、もしあなたのコードをオープンソースにしなければならないとしたらどうしますか?
もし、そのコードに日本語圏の人にしか理解できない変数名や関数名があったとしたら。間違いなく日本語圏以外のあなたのコードを読んだ全てのユーザー(英語圏に限らず、日本語圏以外の全てのユーザーも同意見でしょう……)から「変数名が英語じゃなくて読みにくいぞ!」というIssuesや、変数名を英語に直したPull Requestが飛んでくることでしょうし、私なら日本語圏ですが投げます。
……これは極端な例ですが、ある日プロジェクトに英語はわかるが日本語が全くわからない人が加入したなど日本語圏以外の人がコードを読む可能性があるというのは常に考慮しておくべきです。
日本語圏の人が日本語で、英語圏の人が英語でコーディングしていくと1で挙げた問題が発生します。
このように、日本語圏以外の人が絶対に読まないという保証はないというつもりでコーディングすることも考えるべきです。
結論、コーディングする上で絶対に日本語は書くな!
この2つの理由だけでも、コードを絶対に英語で書くべきであると思ってくれたのではないかと思います。
英語がわからないからと言って日本語に逃げるのではなく、英語を調べてコーディングに使っていくことで、英語にもなじむことができますし、英語でコーディングする方がメリットは多いように感じています。
この記事があなたのリーダブルコードを意識する第一歩となる記事となってくれれば幸甚の至りでございます。