LoginSignup
1
0

More than 1 year has passed since last update.

PugやHamlなどのインデント記法は、HTML作成には不向きでは?

Last updated at Posted at 2022-09-03

主観的なコーディングスタイルの話になります。正しい、間違っているは読み手の判断に委ねられます。

1.インデント記法が向いてるのは短く浅いブロック

インデント記法は、字下げをしてブロックを定義します。
有名なのはPythonですね。

sample

def print_number(last):
    for i in range(last)
        print i

def print_multiple(multiple, last):
    for i in range(last)
        print i * multiple

個人的に、Python、そして、それと同じ記法をもつCやJavascriptをトランスパイルできるNimはとても好きです。

インデント記法は、スペースやインデントの違いにより問題を起こしかねないという欠点の指摘もあります。

感覚的に、JavascriptやRubyのようにブロックで閉じている方がわかりやすいという人もいます。インデント記法がよいか悪いかはどのようなエディタを使うかや個人の好みに委ねられる気もします。

個人的に、プログラムは行数は短く、ブロックは浅くすることでみやすさや、テストのしやすさを担保されるので、こうしたコーディングスタイルをするのであれば、インデント記法はブロックの特定がしやすくて問題ないと思います。

2.HTMLがインデント記法になじまないと思う理由

インデント記法でHTMLを記述するライブラリとしてPugやHamlがあります。HTMLの不等号(<>)を使わなかったり、閉じタグを付けないので記述する文字数が少ないので、書きやすい、読みやすいとされています。

確かに、短く、ブロックが浅い分にはとても有効だと思います。
ただ、実際、仕事でHTMLをコーディングすると、長く入れ子が多い(ブロックが深い)です。
こうなると、インデント記法だと、深くなればなるほど、ブロックの違いがわかりにくくなり、ときに、スペースが一つないだけでコンパイルエラーになります。

また、インデントのネストがある場合、フォーマッターをかけると意図しないところでネストされてしまうことがあるので、迂闊にフォーマッターをかけにくいです。
閉じカッコがある記法の場合、フォーマッターは意図通りになります。

最近は、ReactやVueなどで小さくコンポーネントをつくるので、こうした問題は起こりにくいかもしれません。
逆に、少ししか書かないのでコンパイルの準備をすることがめんどくさいので、HTMLのまま書く人も多いと思います。

最近は、VSCodeなどでHTMLを記載するにしても、スニペットをつかったり、コード補完が効くので、ゼロからすべての記号を書くわけではありません。

IDEの補完が効かないような場合、PugやHamlは便利かもしれませんが、現在はかならずしもこれを使う必要もないかと思います。
それよりも、コンパイルの準備をしたり、複雑になった場合のエラーを考えると、コード補完機能をつかって、HTMLを記載するほうが楽な気もします。

3.HTMLは処理の流れを記載するプログラムではなく、構造を記述するもの

HTMLがインデント記法になじまないと感じるのは、構造を記述する言語であるからだと思います。

Pythonのように処理の流れを記載するものではなく、構造を記載するものは、入れ子が発生したりしやすく、長く全体を捉えた方が視覚的にもわかりやすい。

インデント記法のアンチパターンが発生しやすいのが構造記述をするHTMLなのではと感じています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0