光物コレクション技術メモブログその他ダウンロード内部向け本サイトについて(プライバシーポリシー/ライセンス)技術メモ後で同じ状況が起こった時に思い出せるように技術的なちょっとしたことをメモする。プログラミングにおける字下げスタイル(ブロックの改行)に関してTweetプログラミングにおいての争いは常に絶えない。ブラウザの宗教問題やインデントのタブ問題など様々な争いの一つに字下げスタイル(ブロックの括弧の位置)問題がある。while文などの処理対象を示す括弧やキーワードで囲まれた領域(ブロック)を字下げ(改行)してから始めるか、しないで始めるかなどのスタイルの好みの問題である。字下げをする書き方をBSD/オールマン・スタイルと呼ぶ。(厳密にはもう少し細かく分かれることもある。その辺はWikipediaが詳しいので参考にすると良い。)例えば、C言語で0~9まで標準出力するコードは以下のようになる。*/for(i=0;i<10;i++){printf("%d\n",i);}このように微妙に書き方が異なり、それによって争いが生じる。※厳密にはK&Rスタイルでは関数のみ改行を行うことがあるでは、どちらが良いのかいきなり結論からいってしまうと、これはあくまで主観だが改行しない方(K&Rのスタイル)が良いと思う。理由はシンプルで、改行するとスクロール量が多くなってしまうからである。下にC言語でのint型の変数aが正負どちらなのかを出力するプログラムの例を示す。if(a<0){printf("%dは負の数です\n",i);}else{printf("値は0です\n");}この例では明らかに行数に差が出ている。画面が大きく、コードの量が大して多くない場合はそこまで困らないが、そうでない時、改行が多いとコードを読み書きするのにいちいちスクロールしなければならない。SSHの接続先などの回線が細い場所でコードを編集する場合や低性能なマシン上で編集するときなどにこのスクロールのコストは大きい。1画面の情報量は多いほうが良い。これが人々が解像度の高いディスプレイを使いたがる理由の1つだ。ブロック単位で改行するのはこの思想に反している。言えば、改行を余計に入れることでファイルサイズは大きくなってしまう。(大した量ではないが)ブロック単位で改行をする方がブロックが見やすいという主張があるが、それはその書き方に慣れているからであって、私にとっては改行していない方(K&Rスタイル)が見やすいと感じる。個人的な思いだが私からすると、改行する書き方(BSD/オールマン・スタイル)が変に思われて仕方がない(K&Rスタイルの関数でだけ改行すること関しても同様に変だと思う)。ブロックが括弧({})で表されていれば読めなくもないのだが、それがキーワード(do〜endなど)で表される場合、以下の例(Ruby)ように可読性は悪くなる。※厳密に「BSD/オールマン・スタイル」/「K&Rスタイル」と呼べるかどうかはわからない。then〜else〜endではelseだけthenがつかないため、バランスが悪く、非常に不格好である。昔は、改行しないスタイル(K&Rスタイル)を見ることが多かったが、最近になって改行する人(BSD/オールマン・スタイル)が多くなったように感じる。この原因はVisualStudioにあると思う。VisualStudioのデフォルトのブロックのフォーマットが改行するようになっているので、それをそのまま使う人が多いのではないか。その変更方法が意外と面倒くさい。簡単にこの記事を以下にまとめる。ブロックごとに改行をすること(BSD/オールマン・スタイル)はしないとき(K&Rスタイル)に比べて1画面の情報量が少なくなり、スクロール量が多くなるファイルサイズが大きくなる見た目が気持ち悪いので、やめましょう。VisualStudioでの設定の変更方法VisualStudioのデフォルトのブロックのフォーマットが改行する(BSD/オールマン・スタイル)ようになっているので、その改行をしない(K&Rスタイル)設定にする方法をここに記す。ここではVisualStudio2017を例に用いるが、おそらく他のバージョンでも大差はないと思われる。全てのチェックを外す「OK」を押す少々面倒くさいが、これで設定完了!下の画像はC#での設定例。コメントをキャンセル回答をお約束することは出来ませんので予めご了承ください。コメントは承認されると表示されるようになります。コメントを送信する前に「私はロボットではありません」にチェックを入れて下さい。Reserved.TOPへ。