画竜点睛を衝く@mapyo

日々やった事をつらつらと書くブログです

PSR-2のファイルの最後に空行を入れるという事について

きっかけ

PSR-2では、ファイルの最後に空行を入れるという事になっている。

https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md#22-files

という事なので、僕はファイルの最後に空行を愚直に入れるようにしてた。 以下のような感じだ。

<?php
echo 'hello world!'

見た目はわかりにくいが最後に空行が入っている。 (ソース上は空行を入れているのですが、実際に表示させた時には空行は自動的に消えてしまうようです。。。)


でも、PHP Coding Standards FixerというPSRに沿う形でソースを自動整形してくれるツールを使ってみたところ、この空行が毎回削除されてしまっていた。

このツールで整形すると以下のようになる

<?php
echo 'hello world!'

diffだとこんな感じ

$ diff -u before.php after.php        
--- before.php
+++ after.php
@@ -1,3 +1,2 @@
 <?php
 echo 'hello world!'
-

とまぁ、ファイルの最後の空行が削除される。

調べた事

いろいろググってみたところ、以下の辺りが参考になった。

僕が今まで行っていた行為は、ファイルの末尾に\n\nを入れていた。 たぶん、ファイルの最後は改行コード\nを入れるという流れでいこうという事だと思います。。。

改行コードつきでcatしてみる

先ほど作ったファイルを改行コードつきでcatしてみる

$ cat -e before.php
<?php$
echo 'hello world!'$
$

$ cat -e after.php
<?php$
echo 'hello world!'$

今まではあまり深く考えて来なかったのだが、僕が普段使っているvimだとデフォルトでファイルの最後に改行コードが入る。 エディタによってこれが入らなかったりするため、ちゃんと入れるように!という意味なのかなー。

結論

僕の英語力が足りなくてふわっとしている部分があるのですが、 ファイルの最後は改行コードが1つ入っていればいいと考えます。 つまり、

$ cat -e after.php
<?php$
echo 'hello world!'$

このイメージ、before.phpのスタイルをやめてafter.phpのスタイルにしようと思った今日この頃です。

その他

qiitaにも投稿したよ!

http://qiita.com/mapyo/items/327344052d50cfb92db8