68
56

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

真偽値を保持する変数(フラグ)の命名時に気をつけていること

Last updated at Posted at 2015-05-26

ページ内のある要素の「状態」を管理する際に、真偽値(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ステップ増えている感覚があります。

以上の理由から、何か特別な意図がない場合を除き、**「正」「肯定的」「ポジティブ」**な意味をもつ語句を変数名にすることにしています。

68
56
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
68
56

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?