hacomono TECH BLOG

フィットネスクラブやスクールなどの顧客管理・予約・決済を行う、業界特化型SaaS「hacomono」を提供する会社のテックブログです!

モーダルの開閉状態を示すプロパティ名は, isOpen か isOpened か



どーも、みゅーとんです

はじめに

モーダルを表示しているかを状態で示す際に isShow という変数名が使われていることに気づき, そこは isOpened であるべきだ, と指摘したことがあります。
一方, 調べてみると isOpen も一般的に使われていることがわかりました.

混乱したので, 命名規則の整理と共に, モーダルの開閉状態をどう命名するべきかをまとめてみます.

TL;DR

  • 文法的には isOpen isOpened どちらでもよい
  • ニュアンスとして isOpen は “開かれているか”, isOpened は “何かのプロセスの結果開かれたか”
  • モーダルが開いているか?の状態について, 開発者が知りたいのはプロセスではなく状態であるため isOpen のほうが適切
  • ちなみに, close の場合は文法的に isClose はなく, isClosed のみが正しい.


isOpen vs isOpened

一般的には, Boolean で扱われる状態は is can should などを prefix とし, それらに形容詞的な命名を続けるのが, 多くの言語・フレームワークにおける慣習となっています.
今回でいうと, 背景にあった isShowshow でいうと, 動詞的には “見せる”, 名詞的には “見世物” という意味合いがあります. つまり 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 は意味的に対極的ではあるものの, 命名においては単語の品詞を明確に使い分けなければ, ただしい意味合いを表現できないのがよくわかりました.
今回は英語力が試される話だったかなと思います. 英語に馴染みがないと, 命名に躓きやすくなるのがよくわかります.

英語辞書を片手に, 今後も可読性の高いコードを書く方法を模索していきたいですね. おわり



💁 関連記事