4
1

More than 5 years have passed since last update.

変数や配列の縦位置を揃えてはいけない!!(ほとんどの場合は)

Last updated at Posted at 2018-02-27

「縦位置を揃える」というのは、空白を追加してカラム位置を揃えることです。

// こういう、複数の変数定義を
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:]]'
4
1
0

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
4
1