ページ内のある要素の「状態」を管理する際に、真偽値(true or false)を値にとる変数を定義し、フラグとして利用する場合があります。
JavaScript
// ある要素が「開いている状態かどうか」を管理する変数(初期値をtrueとして定義)
let isOpen = true;
if (isOpen) {
// ある要素が「開いている状態」の時のみ実行したい処理
}
// ある要素を「開いていない状態」にするための関数
function closeObject() {
// 何らかの処理
isOpen = false; // 「開いていない状態」に切り替え
}
上記の例では、"isOpen" という変数は実質的に2つの状態(「開いている」と「閉じている」)を管理していることになります。
このような、相反する2つの状態を管理する変数(フラグ)を定義する場合は、
その変数名として
- より**「正」**の意味をもつ
- より**「肯定的」**な意味を持つ
- より**「ポジティブ」**な意味を持つ
ほうの語句を利用すると、コードの可読性が上がると感じます。
具体例
- 「開いている」と「閉じている」の場合: ◯ isOpen × isClosed
- 「見えている」と「隠れている」の場合: ◯ isVisible × isHidden
- 「利用できる」と「利用できない」の場合: ◯ isEnabled × isDisabled
これらの変数が、if文の条件式として論理否定演算子(!)と共に使われるパターンを見てみましょう。
JavaScript
if (!isOpen) { // 「開いていない」場合
}
if (!isClosed) { // 「閉じていない」場合?
}
if (!isVisible) { // 「見えていない」場合
}
if (!isHidden) { // 「隠れていない」場合?
}
if (!isEnabled) { // 「利用できない」場合
}
if (!isDisabled) { // 「利用できなくない」場合?
}
「closed」「hidden」「disabled」のような負の方向性をもつ語句を変数名とした場合、if文の条件式が**「否定の否定」**という状況となるため、コードを読解する際の脳内変換作業が1ステップ増えている感覚があります。
以上の理由から、何か特別な意図がない場合を除き、**「正」「肯定的」「ポジティブ」**な意味をもつ語句を変数名にすることにしています。