レッスン 12
インデントと改行
整形が人間に役立つとき、最小化バイトが重要なとき、チームの慣習。
JSON はトークン間に空白を要求しません。インデントと改行は編集上の選択 — パース後の値は変わりませんが、人間と diff ツールの見え方は変わります。
同じデータ、2 つの表現
コンパクト:
{"user":{"name":"Ada","roles":["admin","editor"]}}
インデント付き(2 スペース):
{
"user": {
"name": "Ada",
"roles": ["admin", "editor"]
}
}
パーサーは同等とみなします。レビュアーは pull request では後者を好みます。
チームの慣習
よくある標準:
- 2 スペース — 多くの JavaScript と Web プロジェクトのデフォルト
- 4 スペース — 一部のエンタープライズスタイルガイド
- タブ — JSON では稀。多くの linter がスペースを期待するため
リポジトリごとに 1 つの幅を決め、CI でフォーマッタチェックを強制しましょう。
コンパクトのままにすべきとき
- 帯域幅を追跡する本番 HTTP ボディ
- サイズ上限の厳しい埋め込み設定
- 人間が読まないマシン間通信
ワイヤー上はコンパクトに保存し、必要ならログやデバッグビルドで整形します。
diff に優しいレイアウト
安定したキー順序と一貫したインデントは、コードレビューで回帰を見えやすくします。ランダムなキー順や混在したスペーシングは、本当のロジック変更を隠すノイズの多い diff を生みます。
レイアウトは人間への伝達手段として扱い、JSON データモデルの一部ではありません。