エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

プログラミングの三単現のS

最近、英語の重要性を思い知ることになって、少しづつ中学生レベルから学習中。

流石にアルファベットは書けまっせ。


もの凄く衝撃的だったのが、三単現のS!

「三人称単数現在のS」って呪文を覚えさせられた中学の記憶がよみがえります。。。

これを意図せず使いこなせているのがスゴいと思った。

三単現のSなんて、言葉を聞かない限り思い出しもしなかったけど、プログラミングやっているとこれが頻繁に出てくる。

なんとなくの命名のはずなのに、三単現のSを使いこなせているのが驚きだった。


三単現

まず、三単現とはなんぞやから。

三単現は「三人称単数現在」の略語。それぞれの意味は以下の通り。

最後にsをつける条件のことだね。

三人称

自分と話し相手以外の人のこと。

話しの最中に出てくる「彼」「彼女」「あいつ」とか。
オブジェクトは、話し相手ではないので、基本的には三人称。

現在

プログラミングに過去も未来もないので、現在になる。

過去とか、未来とか言ってるとコードギアスを思い出す。

プログラミングは、シュナイゼル派だったんだね

単数

操作するオブジェクトは一つなので、単数。



総括

上記の三人称、現在、単数をまとめて三単現といい、その条件を主語の動詞にはsが着く。
つまり、オブジェクトが主語になるメソッド必ずsが最後に着く。
もっと別の例にすると「オブジェクトは~」の形になるもののメソッド名にはsが最後に着く。
これ結構衝撃的だったわぁ・・・
例を挙げると以下

str1.equals(str2)

「str1はstr2と等しい」と解釈するので、「equal」ではなく、「equals」になる。
equalだと違和感バリバリに見えるから、無意識に三単現のS使いこなせている俺、スゲー!

これは俺のメソッドの命名規約に入れるべき発見だったわ・・・


メソッドは全てsが付くかと言うと、そうでもない。

「~を~」「~に~」って形の意味の解釈もあるから、三単現のSにならないメソッドもある。

getter、setterは分かりやすい。

「~をオブジェクトから取得する」「~をオブジェクトに設定する」で、「~は~」の形に出来ない。

無理矢理しようと思えば出来るけど、間違った日本語が出来上がる。

無意識のうちに判断して命名してたことに衝撃を覚えた。


こんなところで英語に繋がると思わなかった。
学生時代は、もっぱら数学を頑張っていた。
もっと英語頑張っておくべきだった。。。


今度からは意識的に考えて命名すれば、もっとコードの可読性が上がりそう。

いい発見ができた。

些細な発見ができてシ・ア・ワ・セ