最近、英語の重要性を思い知ることになって、少しづつ中学生レベルから学習中。
流石にアルファベットは書けまっせ。
もの凄く衝撃的だったのが、三単現のS!
「三人称単数現在のS」って呪文を覚えさせられた中学の記憶がよみがえります。。。
これを意図せず使いこなせているのがスゴいと思った。
三単現のSなんて、言葉を聞かない限り思い出しもしなかったけど、プログラミングやっているとこれが頻繁に出てくる。
なんとなくの命名のはずなのに、三単現のSを使いこなせているのが驚きだった。
三単現
まず、三単現とはなんぞやから。
三単現は「三人称単数現在」の略語。それぞれの意味は以下の通り。
最後にsをつける条件のことだね。
三人称
自分と話し相手以外の人のこと。
話しの最中に出てくる「彼」「彼女」「あいつ」とか。
オブジェクトは、話し相手ではないので、基本的には三人称。
現在
プログラミングに過去も未来もないので、現在になる。
過去とか、未来とか言ってるとコードギアスを思い出す。
プログラミングは、シュナイゼル派だったんだね
単数
操作するオブジェクトは一つなので、単数。
総括
上記の三人称、現在、単数をまとめて三単現といい、その条件を主語の動詞にはsが着く。
つまり、オブジェクトが主語になるメソッド必ずsが最後に着く。
もっと別の例にすると「オブジェクトは~」の形になるもののメソッド名にはsが最後に着く。
これ結構衝撃的だったわぁ・・・
例を挙げると以下
str1.
「str1はstr2と等しい」と解釈するので、「equal」ではなく、「equals」になる。
equalだと違和感バリバリに見えるから、無意識に三単現のS使いこなせている俺、スゲー!
これは俺のメソッドの命名規約に入れるべき発見だったわ・・・
メソッドは全てsが付くかと言うと、そうでもない。
「~を~」「~に~」って形の意味の解釈もあるから、三単現のSにならないメソッドもある。
getter、setterは分かりやすい。
「~をオブジェクトから取得する」「~をオブジェクトに設定する」で、「~は~」の形に出来ない。
無理矢理しようと思えば出来るけど、間違った日本語が出来上がる。
無意識のうちに判断して命名してたことに衝撃を覚えた。
こんなところで英語に繋がると思わなかった。
学生時代は、もっぱら数学を頑張っていた。
もっと英語頑張っておくべきだった。。。
今度からは意識的に考えて命名すれば、もっとコードの可読性が上がりそう。
いい発見ができた。
些細な発見ができてシ・ア・ワ・セ