Scribble at 2023-04-27 13:10:06 Last modified: 2023-04-27 13:28:51

添付画像

ソースコードのインデント(字下げ)に、タブを使うか半角スペースを使うかという話

プログラムを記述するときには、コードをインデントすることが多い。可読性のためにやることもあるが、一部のプログラミング言語では処理のブロックを表すためにインデントが必須となっていることもある。それぞれのプログラミング言語にはコーディングの規約というものが整備されていて、上に紹介した記事でまとめてくれているように、インデントする文字として、おおよそ (1) タブ文字、(2) 半角スペース2文字、(3) 半角スペース4文字というスタイルに分かれている。それぞれ利点なり欠点があって、このところはタブ文字を非推奨とするプログラミング言語のコミュニティが増えているようにも見受ける。Python のようにインデントが決定的に重要な言語だと、タブ文字と半角スペースがインデントとして混ざってると専用の例外を吐き出す仕様まで備えている。

このようにタブ文字を使うインデントは、このところ分が悪いのだけれど、僕は仕事でもプライベートでもインデントにタブ文字を使う。理由は、記事に書かれているのと逆である。つまり、半角スペースには2文字派とか4文字派とかあって、逆に見栄えがプログラミング言語なりコーダによってコロコロ変わるから可読性が低いと思うからだ。それに、タブ文字に比べて半角スペースのインデントはギャップが大きすぎるように感じる。そんなにズラさなくてもいいじゃないかと思うほどズレてるコードがあったりするのだ。そして、まぁ往々にしてあるのがバカみたいにネストしたコードを書かれると、エディタの右端から消えてしまう場合がある。プログラミングでは、そんな無能のコードなんて読んだり使う必要など感じないが、HTML では大半のコーダがクズみたいなソースを書くので(ボーダーとかアウトラインというのを知らずに、ブロック要素を二重に囲む枠だけのために div で囲むバカとか、山ほどいるよね)、ネストしすぎてコードが右端から見えなくなる事例も多々ある。

結局、タブ文字を「スペース何文字分」なんていう換算の仕方で表示するエディタの仕様とかにも影響されているだろうから、こういう話は必ずしも文字の種類についての是非を議論しているとは限らないという実情がある。なので、僕は自分で扱いやすい(つまり、僕の開発環境で快適かつリスクが少ないならいいのだ)ようにしている。たぶん Python でもインデントにタブ文字を使い続けると思う(半角スペースと混在させるわけない)のだが、困ったことに Visutal Studio Code とか一部のエディタや IDE でディフォールトの設定だと勝手にタブ文字を半角スペースに(バグだろうと仕様だろうと)変換するものがある。不幸にも、僕は制御記号をあまり目立たないようエディタの UI(テーマ)で配色を調整しているため、勝手に置換されていることに気づきにくい。したがって、あるとき気づいたらインデントに、ちょうどタブ文字と同じ幅で変換された半角スペースが一部の行だけ置換されていたという酷いことになる。なので、新しいエディタを使うときはインデントの設定は最初にやることだし、もちろんエディタを選ぶ条件としてインデントの設定を変えられることが必須となる。

ちなみにインデントの使われかたについて僕の実感として言うと、たとえば Apache の httpd.conf とかはインデントなんてする必要あるかと思うんだけど、結構な割合でインデントしてて、しかも4文字でやってる人がいたりするんだよね。Apache の設定なんてローカルで作業することは殆どないので、ターミナルで起動した nano や vi といったエディタで、いちいち4文字のスペースでインデントしてるのに合わせるなんて馬鹿げたことには付き合っていられない。他のプログラムでも無用にインデントしてるものがあるけれど(もちろん文法としてインデントすべき場合が除く)、そういうのもいちいちインデントを削り落としてることが多い。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook