規約
コーディング規約のPEP8に1行の最大文字数を定めた項目があります。
すべての行の長さを、最大79文字までに制限しましょう
と最初に書かれています。
自分もそれに従い、Lintでもデフォになってた79文字でチェックかかるようにしていました。
ただこれを守ろうとして逆に可読性を下げているなぁと感じることが稀にあったので、規約をもういちど読み直しました。
調整の幅
1行を79文字より長くするのを好むチームもあります。この問題について合意できるチームが独占的に、もしくは重点的にメンテナンスするコードについては、1行> 99文字まで制限を緩めてもOKです。ただし、コメントや docstring については72文字で折り返すようにすることが条件です。
という記載もあります。
根拠
もともとの79文字の根拠については以下のような記載があります。
エディタのウィンドウの幅を制限すると、複数のファイルを並べて開くことができ、二つのバージョンを隣り合ったカラムに表示するコードレビューツールを使うときにもうまくいきます。
ほとんどのツールのデフォルトの折り返し動作は、コードの見た目の構造を壊し、理解するのを難しくします。79文字という制限は、ウィンドウの幅を80に制限し、行を折り返すときにツールが行末にマーカーを置いたとしても、エディタに折り返す動作をさせない目的で選ばれています。
なるほど。
またPEP8全体の 一貫性にこだわりすぎるのは、狭い心の現れである の項目には
しかし、一貫性を崩すべき場合があることも知っておいてください - つまり、このスタイルガイドが適用されない場合があります。疑問に思ったときは、あなたの判断を優先してください。
とも書いてます。ちょっと見直してみることにしました。
参考情報
IDEのデフォは?
ちなみにPyCharmとVSCodeで確認しましたが、IDE内のエディタはデフォで1行120文字になってました。けっこう長い。
他の言語は?
Characters per line - Wikipedia に色々まとめて載ってました。
80文字の言語が多め。
タイプライターやパンチカードにも由来してそうなところがおもしろい。
In the era of typewriters, most designs of the typewriter carriage were limited to 80–90 CPL.
〜
In computer technology, a line of an IBM punched card consisted of 80 characters.
で、どうしたか
ということで、自チームの標準的なエディタ環境だと90文字ぐらいであれば ツリータブ×1 + エディタタブ×2 の表示でも全然収まるので、ひとまずMaximum Line Length=90に変更しました。2ヶ月ほど経過しましたが変更してよかったと感じています。
様子見て99文字にしてもいいかな〜と考えています。