
どーも、みゅーとんです
はじめに
モーダルを表示しているかを状態で示す際に isShow という変数名が使われていることに気づき, そこは isOpened であるべきだ, と指摘したことがあります。
一方, 調べてみると isOpen も一般的に使われていることがわかりました.
混乱したので, 命名規則の整理と共に, モーダルの開閉状態をどう命名するべきかをまとめてみます.
TL;DR
- 文法的には
isOpenisOpenedどちらでもよい - ニュアンスとして
isOpenは “開かれているか”,isOpenedは “何かのプロセスの結果開かれたか” - モーダルが開いているか?の状態について, 開発者が知りたいのはプロセスではなく状態であるため
isOpenのほうが適切 - ちなみに, close の場合は文法的に
isCloseはなく,isClosedのみが正しい.
isOpen vs isOpened
一般的には, Boolean で扱われる状態は is can should などを prefix とし, それらに形容詞的な命名を続けるのが, 多くの言語・フレームワークにおける慣習となっています.
今回でいうと, 背景にあった isShow の show でいうと, 動詞的には “見せる”, 名詞的には “見世物” という意味合いがあります. つまり isShow は文法的には “見世物かどうか” にあたってしまうことになるのでよくないですね.
open の意味は以下の通り.
openの意味・使い方・読み方・覚え方 | Weblio英和辞書
- 動詞 .. 開ける
- 形容詞 .. 開いた, 開いている
- 名詞 .. 開けた場所
isOpen は形容詞として “開いたかどうか / 開いているかどうか” を表現し, isOpened は動詞の過去分詞形として “開かれたか” を表現します. つまり, 文脈的に isOpen isOpened は区別を付けなくても良いことになります.
ニュアンスの差を整理する
isOpen isOpened はプログラムの文脈, ニュアンスとして, 以下の違いがあると考えます.
isOpen(形容詞): 文脈に関係なく「今, 開いているか」という状態そのもの.isOpened(過去分詞): 「開くアクションを行った結果, 開かれたか」という完了のニュアンス.
エンジニアにとっては, モーダルが開かれているかの状態を扱いたい場合に, それがアクションを行った結果かどうかにはフォーカスされることはあまりないと思います. つまり isOpen のほうがニュアンス的に正しいと思います.
isClose はない
対極の状態として, “閉じられているか?” という命名で考えてみます.
close という単語を辞書で引くと以下の意味があります
closeの意味・使い方・読み方・覚え方 | Weblio英和辞書
- 動詞 .. 閉じる
- 形容詞 .. 接近した, 際どい, 綿密, 密集した
- 名詞 .. 終端, 終わり
見て分かる通り, 閉じられているかを命名するなら, 動名詞を使う isClosed の一択のようです.
isClose は “接近しているか?” “距離が縮まっているかどうか?” のような文脈になりそうです. distance.isClose() みたいな関数に使うと良いのかな?
また, ニュアンスとしても, 明確に閉じるアクションを行った結果として isClosed という文脈で使われることが多いと思います.
まとめ
表にまとめるとこうなります.
| 原型 | 形容詞 | 過去分詞 | 推奨される命名 |
|---|---|---|---|
| open | 開いている | 開かれた | isOpen (形容詞) |
| close | 近い, 親密な | 閉じられた | isClosed (過去分詞) |
open, close は意味的に対極的ではあるものの, 命名においては単語の品詞を明確に使い分けなければ, ただしい意味合いを表現できないのがよくわかりました.
今回は英語力が試される話だったかなと思います. 英語に馴染みがないと, 命名に躓きやすくなるのがよくわかります.
英語辞書を片手に, 今後も可読性の高いコードを書く方法を模索していきたいですね. おわり
💁 関連記事