タブ派?スペース派?

Blog Single

システム開発事業部の町田です、タイトルは最近見始めたスタートアップを題材にした某海外ドラマで、タブ派の主人公とスペース派の彼女が言い争うシーンからです。

スペース派タブ派、おそらく結論がでない論争の代表だと思います。また、チーム開発をしているとそれ以外でも人それぞれ好みでコードの書き方が変わり、複数のスタイルが混在し、無駄な争いや作業がよく起こると思います。また、それを解消するためにコード規約を決めて確認しつつ書くことも面倒なものです。

そこで、そんな面倒なことはフォーマッタに任せてしまおうという提案です。

個人的によく利用しているのは

  • prettier – javascriptのフォーマッタとして開発されたが以後様々言語の対応を進めているフォーマッタ。各種lintツールと連携が可能。
  • PHPCodeSniffer – php向けlintツール、PHP Code and Fixerフォーマッタも同梱されている。PSR2などのコーディング規約を使用できる。

の2つ、どちらもコード規約を設定ファイルに記述しておく事で、コマンド一発で規約通りにフォーマットしてくれます。また、エディタにプラグインをインストールすることで動的に規約違反を表示することも可能です。

 

試しにPHPCodeSnifferを使用してみる

phpのパッケージ管理ツールのcomposerで導入することが可能です。


composer global require squizlabs/php_codesniffer # インストールされたら以下のphpcsとphpcbfへのリンクが/path/to/.composer/vendor/bin配下に追加されます。

試しに以下のphpファイルでPSR2規約とのdiffを表示し修正してみます。


# cs-test.php 修正前 # ▸-はタブ 1 <?php 2 3 class Greeter { 4▸-function greet($name) { echo "Hello, ".$name; } 5 }

このファイルをPSR2に合わせて


# 差分を表示 > phpcs --standard=PSR2 cs-test.php --report=diff --- cs-test.php +++ PHP_CodeSniffer @@ -1,5 +1,9 @@ <?php -class Greeter { - ▸-function greet($name) { echo "Hello, ".$name; } +class Greeter +{ +  function greet($name) +  { +    echo "Hello, ".$name; +  } } # フォーマット実行 > phpcbf --standard=PSR2 cs-test.php PHPCBF RESULT SUMMARY ---------------------------------------------------------------------- FILE FIXED REMAINING ---------------------------------------------------------------------- /Users/mamoru.machida/cs-test.php 5 2 ---------------------------------------------------------------------- A TOTAL OF 5 ERRORS WERE FIXED IN 1 FILE ---------------------------------------------------------------------- Time: 314ms; Memory: 6Mb

# cs-test.php 修正後 1 <?php 2 3 class Greeter 4 { 5   function greet($name) 6   { 7     echo "Hello, ".$name; 8   } 9 }

PSR2はスペース派のようでした。

 

まとめ

この一連の流れをCIへ導入してチーム開発での無駄を減らすのもよし、個人のコーディングスタイルを矯正するためにこっそりローカルに導入するのもよしです。

タブ派スペース派などの論争が起こる前に導入をご検討ください。

Posted by MachidaMamoru
typescriptとAngularが好き、最近Dapps開発にハマっています。

Other Posts: