プログラミングは作文に近いと思うのです。プログラムを書いている時に築いているロジックというのは、「まずこのデータをこっちにおいて、その後これに3.14をかけて、2倍にして、それを標準出力にプリント」みたいな感じで、情緒はないだけであとはまるっきり作文しているのと一緒なわけです。
でもって、作文と一緒で色んな書き方で同じ事に到達できる。さっきのは円の円周を求める式だけど、答えを出すだけなら、こういう説明の仕方もできる:「一時変数に3.14を格納後2倍にし、一変数にさらに引数としてもってきたデータを乗算し、しかるのちに標準出力に出力する」。まぁこの程度のロジックならほぼどんな書き方をしても理解できるよね。
面倒くさくなるのはオブジェクトとかがでてきたり、プログラムの流れそのものがあんまりストレートじゃなくなってきた時。これがプログラミング言語が基本的に英語を基本としているということとも絡まって、なかなか上手に作文ができなくなってくる。
学校に言ってた頃の授業で、英語嫌いでした?
そうかもしれないね。でも、プログラマになっちゃったからしょうがないね。英語、最低限でいいから、覚えよう!そして自然な文章を書くようにロジックを組むことを心がけよう!
で、多分手続き型の処理を書くときはそれほど問題じゃないと思うのです。難しいのはオブジェクト。で、これが絶対だってわけでもないけど、俺が気をつけている「ここだけは要チェック」というチェックシートを書き出してみたいと思う:
1. オブジェクトは常に S - V - O
オブジェクトは常に主語(Subject)、メソッドが動詞(Verb)、そして引数が目的語(Object)としてとらえてみてください。公文式の国語をやっていた人には簡単だね!☆
2. 目的語が必然の場合も、動詞名に加える
例えば、オブジェクトの内部を変換(convert)するメソッドを書いていて、そのメソッドが変換するする対象は1種類しかないので、引数を求めるのは面倒だった、と仮定しよう。このメソッド、なんと命名しますか?例えば...
$object->convert;
これは悪い例。なぜかは、普通に文章として読んだ場合の事を考えてください。これだけだと「変換した」しかわからない。あなたが英語が得意じゃないとして、ただでさえ読みにくい英語ベースのプログラムを読み直すときに、これでバグを見つけられますか?
こういう場合もちゃんとメソッド名に書く!
$object->convert_to_floating_point();
ほら、これなら「浮動小数点に変換」ってわかるじゃない!
3. 助詞を抜かさない
2で書いた
$object->covert_to_floating_point();
ですが、これも助詞がなければなんのこっちゃわからなくなります。
$object->covert_floating_point(); # "to"を抜かした
これを日本語で書くと「浮動小数点変換」。でもそれだけだと助詞がないから「浮動小数点」と「変換」の関係性がわからない。
それって浮動小数点「から」?それとも「に」?それとも、これって、浮動小数点「を」使ってなにか変換する?
今まで見てきたソースコードの中で日本人が最もこの罠に陥りやすいと思う。 というか、ラテン語ベースの言語はみんな助詞がもっと明示的な物だと認識してると思うんだよね。日本語はそのあたりが曖昧。
というわけでどんなに自明に思えても、助詞込みで書くのがおすすめ
$object->convert_to_floating_point(); # 小数点「へ」
$object->convert_from_floating_point(); # 小数点「から」
$object->convert_with_floating_point(); # 小数点「で」
とりあえず時間がないのでこれまで!
コメント