LoginSignup
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:]]'

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
What you can do with signing up
1