人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

古い Mac, Windows, DOS などで動作させない場合、Python のモジュール名としてアンダースコアを使った長い文字列を使っても、差し当たって問題は無いという認識でよろしいでしょうか?


PEP 8 には「モジュールは短く、全て小文字の名前を使うべきです。 可読性のためにモジュール名の中にアンダースコアを使っても構いません。 Python パッケージもまた短く、全て小文字の名前を使うべきですが、 アンダースコアは非推奨です。」とあります。

非推奨である理由は、「モジュール名はファイル名にマッピングされ、いくつかのファイルシステムは 大文字小文字の区別をしなかったり長い名前を削るため、極めて短い モジュール名を選択することは重要です。 これは Unix では問題にならないですが、コードを古い Mac, Windows, DOS などに 持って行った時に問題になります。」とあります。

自分は「コードを古い Mac, Windows, DOS などに 持って行」く予定がありません。そういった場合には可読性重視で、アンダースコアを含む長いモジュール名を使ってしまっても、良いのかという確認が取りたく質問させていただきました。

https://dl.dropboxusercontent.com/u/555254/pep-0008.ja.html#id25

●質問者: domodomodomo
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●300ポイント ベストアンサー

まず、最初に言っておきたいのは、「郷に入っては郷に従え」です。

ぼくがプログラムをいじりだしてから、随分と月日が経ちましたが、「ああ、こんなはずじゃなかった」と言ってる人たちを、掃いて捨てるほど見てきました。
そのうちの三割くらいは、大きな不都合がないのにオレ流ルールを持ち込んでいた人たちです。未来なんて分かるはずがないのに。



んで、件のコーディングスタイルのガイドについてです。
さすがに 2001年のガイドなので、古いですよね。

http://tell-k.hatenablog.com/entry/2012/02/26/173554
↑を参考に、PEP 8 以外のコーディングスタイルを流し読みしてみましたが、クラス名や変数名、メソッド名については言及されていても、パッケージメイやモジュール名について、多少なりとも言及があったのは、Google のスタイルガイドくらいでした。
と言っても、この程度。

Type Public Internal
Packages lower_with_under  
Modules lower_with_under _lower_with_under

...

http://google-styleguide.googlecode.com/svn/trunk/pyguide.html?utm_source=Python+Weekly+Newsletter&utm_campaign=96df3e3c62-Python_Weekly_Issue_32_April_26_2012&utm_medium=email


その他のコーディングスタイルについても、「一行80文字は無いよねー」以外は、PEP 8 を尊重しつつ、限定的な内容を追加している感じです。
とはいえ、8.3 文字のファイル名の考慮は、一行80文字と同じくらい過去の遺物。
先の Google のスタイルガイドでも、さらりと8文字を超えたパッケージ名だったり、モジュール名だったり。


というわけで、アンダースコアを含む長いモジュール名は、あり だと思います。

# あれ、最初に書い(ry :-p


domodomodomoさんのコメント
ご回答いただき、誠にありがとうございます。 自分は「どうしてこうなった」という言葉が頭をよぎることが多々あるので、 「郷に入っては郷に従え」といのは、肝に銘じたいと思います。

a-kuma3さんのコメント
バージョン管理システムだったり、ユニットテストだったり、周りの環境も、少し前とは随分と変わりましたので、盲信せよ、とは言えませんが、他の観衆を無理矢理持ち込む前に、ちょっと考えてみる余裕が欲しいところです。 # 七割方、自分に向かって言ってます <tt>:-)</tt>

domodomodomoさんのコメント
お目汚し、誠に失礼いたしました。 質問前に、ひと呼吸置けられるように努めてまいります。

質問者から

回答サマリ
原則、アンダースコアを使って問題は無い。
Google Python Style Guideでの記載は次の通り。

TypePublicInternal
Packageslower_with_under
Moduleslower_with_under_lower_with_under


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ