日々常々

ふつうのプログラマがあたりまえにしたいこと。

チームでフォーマッターを使うときのあれこれ

見やすいコードのために出来るたった一つのこと - 日々常々 の続きみたいなもの)


「フォーマッターを使わないなんてありえないよねー」とか思ってたけど、意外と使っていないプロジェクトは多いのかもしれない。思い返せば、私の経験上も多くのプロジェクトで使ってなかった。なので導入する時にあったあれこれを思い出しつつ書いてみる。

必ず同じ定義を使用する

必ず全員同じ定義でフォーマットしましょう。
個々人の好みはあるとは思いますが、それ以上に共通したものを使うことのメリットの方が大きいはずです。

これから導入する場合、まずはその言語で一般的っぽい定義を手に入れ、既存のコードをフォーマットしながら微調整するのがいいです。

なるべく早いうちに導入する

可能な限り早く導入しましょう。途中からの導入も可能ではあります(後述)が、それでもなるべく早期に導入しているほうが、余計なコストもかかりません。
何よりチームメンバーが早く慣れられます。

自動的に実行されるようにする

例えばEclipseを使用している場合、保存時のアクションで自動的にフォーマットを実行することが出来ます。複数人で開発を行う場合、開発環境を統一することが多いと思いますので、容易で効果の高い方法です。

既にコードがある場合

自動フォーマットを開発途中で導入すると大量の差分が発生するため、躊躇うこともあります。
こういう時は フォーマットのみでコミット すると、大量の差分に悩まされずに済みます。

重要なのは、他の変更と同時に全体に及ぶフォーマットをしないことです。

フォーマット前後を比較する

他の変更も含んだフォーマット前後のコードを比較したくなることもあります。単純にDiffなんてしてしまうと非常に残念な結果しか返ってきません。かと言って手が無いわけでもありません。

高機能な比較ツールを使用する。

例えばWinMergeだと、改行や空文字を差分と見なさないと言うオプションがあります。見なければならない変更量をぐっと減らすことが出来ます。

両方ともフォーマットしてから比較する。

フォーマッターを信用していることが前提になりますが、昔のフォーマット前のコードをフォーマットした後に比較すれば、フォーマッターによる変更は差分になりません。

フォーマッターを使用しない人がいる

がんばって説得するのも重要ですが、前述の自動実行とかも有効です。

「Ctrl-F押すだけじゃないか!」と言っても、慣れてない人や、そう言うの無しで長年やって来られた方には、なかなか難しいものです。
フォーマッターの実行を行っていないことを責めたりしてギクシャクしても、面倒なだけです。

信用出来るフォーマッターが存在しない

がんばって作ってください。