@konbraphat51

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【Python】モジュール(ファイル分け)の基準は?

コーディングスタイルの質問です。

Pythonのコーディングにおいて、みなさんはどのようにモジュール(ファイル)を分けていますでしょうか?

C#やJavaなどは1クラス1ファイルのスタイルが多いですが、Pythonの場合は1ファイルが「モジュール」という意味付けがされていて、1クラス1ファイルのスタイルはベストではなくなるかなと思います。(クラス構造によってはcircular importの可能性もありますし)

しかし、単純に「モジュール」の字義通り機能ごとに分けるとしても、内容によっては1ファイルが長くなることも、、、

そこで、皆様はどのようにコーディングをしていますでしょうか。
もちろん「プロジェクトによる」というのは言うまでもないことですが、皆様の実践を知りたいと考えています。

0 likes

1Answer

小さなwebサーバーとして実行します。
ソースもライブラリーも同じ場所にあります。

cd /var/prj/12000/
ls # wsgi.py prj12000.py
python wsgi.py -p 12000 -h 192.168.0.1

prjフォルダは英字3文字でプロジェクトコード、prj12000.pyの頭3桁と同じです。

wsgi.py
from prj12000 import *
def call....

nginx で集約してます。

/etc/nginx/conf.d/port443.conf
location ~/12000/.* {
  proxy 192.168.0.1:12000;
}

接続は https://mydomain/12000/call

マイクロサービスに試行錯誤中です。
ソースもライブラリーも /var/prj/12000/ 直下にポート番号も同じです。

次にのような他のフォルダのライブラリーは参照してません。

wsgi.py
from ..12001 import prj12001

1ファイルないし、数ファイルに1サービスを詰め込みます。(コード数は全体で1000行以下)

異様なように感じられると思いますがプロジェクトによるより、設計アーキテクチャによるものではないでしょうか?

1Like

Comments

  1. @konbraphat51

    Questioner

    ありがとうございます。サーバーサイドを書いていて、サーバーのAPI?機能?ごとに細分化して、小サーバーとして見立てて、そのサーバーごとにディレクトリを分けている、ということでしょうか?

  2. 機能=サービスとすると、その通りです。最初は、画面にinnerHTMLでパッチワークのようにAjaxで小さな部品を差し替えていました。
    最近はjsonをサーバー側で生成し、送信し、クライアント側でHTMLを生成してます。

    勿論、java.jsとして 12000の直下にあります。

    webSocketがpythonとjavaScript相性がよくjson連携をマイクロサービスでトライしてます。

Your answer might help someone💌