LoginSignup
10
2

More than 5 years have passed since last update.

Elixirでは行の最大長をいくつにするべきか

Last updated at Posted at 2018-05-11

(2018-08-02 19:55:00 JST 追記)最近のcredoはデフォルトの行の長さを120としているようだ https://github.com/rrrene/credo/commit/06c6a07d2e68b513660382f51e68fcdb81355b8c
もう120でいいな……

プログラマにとっての読みやすさを維持するため,またプログラムの構造の歪さが行の長さとして現れることがあるため,Linterで行の長さを制限することがよくある.

ElixirでメジャーなLinterであるcredoデフォルトでは行の最大長を80と定めている.80というのはデファクトスタンダードであったVT100というターミナルが表示できる行の最大長が80だったことに由来するようだ.これは妥当な設定である.しかし現代のプログラミングにおいて80は少し短すぎることもある.例えばURLが80文字以上の事もままあり,その場合コメントに参考のURLを書くだけで最大長に違反することになる.もちろんそういう場合だけ回避する方法はcredoにも用意されてはいるが,近年のプログラミングではもう少し制限を緩めても良さそうだ.

それではどのような値が妥当なのか.Githubでcredoの最大長制限設定をみると100,120あたりが多いようだ.(2018-05-14 12:36:00 JST 追記)また先程伸べたVT100というターミナルでは拡張VRAMを用意した場合132文字になるそうだ.これを採用するのもありかもしれない.

ところでElixirには標準のフォーマッタがある.そのフォーマッタは行の長さが何文字以上になると折り返すだろうか.フォーマットを担当しているCode.format_string!/2のドキュメントによると98であるそうだ.一つの指針として標準のフォーマッタがデフォルトで採用している98というのは妥当な選択になるだろう.

98というのは何に由来しているのか調べてみたところElixir Style GuideのissueにあるコメントでElixir作者のJoséからの伝聞という形で由来が書いてあった.

I just asked @josevalim this question. He chose 98 so that it wouldn't take sides for any default preference. If it were 100 then someone would argue for 80. This way no one is happy. 😁

既存のいずれかのデフォルト設定によせてしまうと,なぜ別のデフォルト設定ではないんだという論争が起きてしまう.それを避けるためどのデフォルト設定にも偏らないオリジナルな98という数字を選んだそうだ.

まとめ

Elixirにおける行の最大長としては80,98が既存のデフォルト値となっているので理由をつけやすい.
またコードを検索すると100や120なども広く採用されているようだった.
(2018-05-14 12:36:00 JST 追記)132というのも裏づけのある値として検討に値するだろう

私は98でいってみようかなあ.
厳しそうだったら120にしよう.

10
2
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
10
2