古い 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

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2014/07/23 18:08:40
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4974ベストアンサー獲得回数2154

ポイント300pt

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

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



んで、件のコーディングスタイルのガイドについてです。
さすがに 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

他1件のコメントを見る
id:a-kuma3

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

2014/07/23 21:20:37
id:domodomodomo

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

2014/07/27 11:43:31

その他の回答0件)

id:a-kuma3 No.1

回答回数4974ベストアンサー獲得回数2154ここでベストアンサー

ポイント300pt

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

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



んで、件のコーディングスタイルのガイドについてです。
さすがに 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

他1件のコメントを見る
id:a-kuma3

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

2014/07/23 21:20:37
id:domodomodomo

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

2014/07/27 11:43:31
id:domodomodomo

回答サマリ

 原則、アンダースコアを使って問題は無い。

 Google Python Style Guideでの記載は次の通り。

TypePublicInternal
Packageslower_with_under
Moduleslower_with_under_lower_with_under

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません