share facebook facebook facebook twitter twitter menu hatena pocket slack

2021.08.31 TUE

PEP8のMaximum Line Lengthいくつにしてます?

高橋 修一

WRITTEN BY 高橋 修一

規約

コーディング規約の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文字にしてもいいかな〜と考えています。

元記事はこちら

https://qiita.com/cof123/items/486c24f5ca1e0d3483a2

高橋 修一

高橋 修一

社内サービスの開発を主にやっています。大阪オフィス所属。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。