「縦位置を揃える」というのは、空白を追加してカラム位置を揃えることです。
// こういう、複数の変数定義を
const marginTop = 16;
const marginBottom = 24;
const marginLeft = 16;
const marginRight = 24;
// こう整列する?
const marginTop = 16;
const marginBottom = 24;
const marginLeft = 16;
const marginRight = 24;
たしかリーダブルコードでも、紹介されていたはず(今手元にないので、うろ覚えですが)。
でも、私は縦位置を揃えることを積極的には賛成しません。
コードフォーマッタでは対応できない
私も実際、縦位置が揃っていた方が見やすいとは思います。
揃っていないよりは、揃っていた方が良い。問題は揃えるために支払うコストです。
Go言語のgo fmt
を皮切りに、どの言語でもコードフォーマッタが普及してきているようです。コードフォーマッタを使うと、
- 書く時に細かいコードの体裁を気にしなくてもいい
- レビューでコードの体裁をレビューしなくてよくなる
- 不毛な議論を避けられる(「ルールではインデントすることになってますが、ここではインデントするのが自然です!」なんて言い出す人が出てくる)
と、コードの体裁に関するコストを削減し、その分本質的な部分に時間をかけることができるようになります。
ところで、あなたが使っているコードフォーマッタは、「縦位置を揃える」ことができますか?
できるのなら、おめでとう。
できないとしたら・・・。
もし、どうしても縦位置を揃えたいのなら、コーディング規約を定めて、手動で入力しなければなりません。でもそれって、
- 書く時にコードの体裁を気にしなければならない
- レビューで、コードの体裁を気にしなければならない
- 時々、不毛な議論になる(「ルールでは縦揃えすることになってますが、ここでは揃えないのが自然です!」なんて言い出す人が出てくる)
って、コードフォーマッタ以前に払っていたコストを、(部分的に)払い続けるってことですよ?
私としては、縦位置は揃っていた方が良いが、別に揃っていなくても我慢できなくはありません。むしろ、縦位置なんて諦めた方が総合的には幸せになれると思います。
(余談)縦位置を揃えない "間違った" 理由
ところで、縦位置を揃えない派の中には、
変更時に、レイアウト調整のために、無関係な行も変更しなければならない
って理由を挙げる人がいます。
こんな diff は嫌だ!ってことです:
-const marginTop = 16;
-const marginLeft = 16;
+const marginTop = 16;
+const marginLeft = 16;
+const marginBottom = 24;
+const marginRight = 24;
でも、これはコーディングスタイルの問題というより、どちらかというとツールの問題って気がします。
例えば、git diff
では --word-diff-regex
を使うと、空白の変更しかない行は無視できます:
$ git diff --word-diff-regex='\\w+|[^[:space:]]'
const marginTop = 16;
const marginLeft = 16;
+const marginBottom = 24;
+const marginRight = 24;
エイリアスとして登録しておくと便利です。
# ~/.gitconfig
[alias]
diff-word = diff --word-diff-regex='\\w+|[^[:space:]]'