はじめに
配列が空かどうかを判定する場面は日常的にあります。その際、array.length > 0 と書くべきか、array.length != 0 と書くべきかで迷ったことはありませんか?
可読性、使用頻度、企業のスタイルガイド、実際の開発現場での傾向を比較し、より根拠のあるものを見出してみます。
1. それぞれの意味と動作
array.length > 0
if (array.length > 0) {
// 配列に1つ以上の要素がある
}
- 「0より大きい」という意味が直感的でわかりやすい。
- 肯定形の条件であり、意図が即座に伝わる。
array.length != 0
if (array.length != 0) {
// 配列が空ではない
}
- 「0でない」という否定条件。
- 厳密等価でない場合 (
!=) は型変換が起きる可能性があり、バグの原因になりうる。 - 厳密等価
!== 0ならば安全だが、意図はやや間接的。
2. ネット上での使用傾向
-
Reddit や Stack Overflow では、
> 0や=== 0を使う方が理解しやすいという意見が多数。 - Reddit のコメント例:
“I prefer the first one because it’s faster to understand for me. However, you should be using strict equality comparisons which uses 3 ===”
(> 0の方が理解しやすい。ただし厳密等価を使うべき。)
3. 大手企業スタイルガイドの推奨
Airbnb JavaScript Style Guide
- 厳密な比較 (
===,!==) を強く推奨。 - 暗黙的な比較 (
!=) は禁止。 - 明示的な意図が伝わる書き方を推奨しており、
> 0も許容される。
Google JavaScript Style Guide
- 暗黙の型変換を伴う比較を禁止。
-
!==を使う場合でも、読みやすさのため肯定形条件が望ましいとされる。
4. 可読性の観点
-
> 0は「要素がある」というポジティブな条件。 -
!= 0は「空ではない」というネガティブな条件で、条件式が複雑になると誤解を招きやすい。 - 複雑なコードや条件がネストする場合は肯定形条件を使うことで理解コストを下げられる。
5. 比較表
| 比較方法 | 使用頻度/言及例 | 可読性/意図明示性 |
|---|---|---|
array.length > 0 |
Reddit や多数のブログで支持される肯定表現 | 非常に明確:「要素があるか」 |
array.length != 0 |
少数派、暗黙的許容(== 使用) | 否定形で直感にやや劣る |
array.length !== 0 |
厳密比較という意味では妥当 | 可読性は中程度「0でない」 |
6. 推奨結論
-
最も推奨:
array.length > 0(明示的・肯定的で意図が明確) - 厳密比較が必要な場合は
array.length !== 0 -
!= 0は避ける(暗黙型変換のリスクとスタイルガイド違反)
7. 最後に
皆様の意見をお聞かせください。