Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

きっかけ

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のスタイルにしようと思った今日この頃です。

mapyo
プログラマー修行中の身です。
http://d.hatena.ne.jp/mapyo/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away