7

ビジネスロジック、ORM、GUIで構成される個別のモジュールに分散させようとしているSQLAlchemyとwxPythonを使用してアプリケーションを開発しています。

これをpythonicな方法で行う方法が完全にはわかりません。

オブジェクトを使用するには、それを呼び出す必要があるため、ビジネス ロジックに配置mapping()することを考えましたが、すべてのテーブル定義は別のモジュール内に保持します。__init__.pyorm.py

次のようなものを保持する必要があります:

/Business
    /__init__.py
    |    mapping (module1.Class1, orm.table1)
    |
    /module1.py
         Class1

/orm.py
     import
     table1 = Table()
/GUI
    /main.py
    |    import business
    /crud.py

または何かのような

/Business
    /__init__.py
    |    import
    |
    /module1.py
         Class1
         table1 = Table()
         mapping (module1.Class1, orm.table1)

/GUI
    /main.py
    |    import business
    /crud.py

最初のアプローチは推奨されますか? 他のオプションはありますか?私は 2 番目の方法を見てきましたが、データベース処理コードとビジネス ロジック コードを同じモジュール内に配置するのは好きではありません。私はそれを考えすぎていますか?それほど大きな問題ではありませんか?

4

1 に答える 1

6

Jp Calderone によるこのドキュメントは、Python プロジェクトを構造化する (しない) 方法に関する優れたヒントであることがわかりました。それに従えば問題ありません。ここに全文を転載します。

Python プロジェクトのファイルシステム構造

する

  • ディレクトリにプロジェクトに関連する名前を付けます。たとえば、プロジェクトの名前が「Twisted」の場合、そのソース ファイルの最上位ディレクトリに名前を付けますTwisted。リリースするときは、バージョン番号のサフィックスを含める必要があります: Twisted-2.5.
  • ディレクトリTwisted/binを作成し、実行可能ファイルがある場合はそこに配置します。.py Python ソース ファイルであっても、拡張子を付けないでください。プロジェクトの別の場所で定義されたメイン関数のインポートと呼び出し以外のコードをそれらに入れないでください。
  • プロジェクトが単一の Python ソース ファイルとして表現できる場合は、それをディレクトリに配置し、プロジェクトに関連する名前を付けます。たとえば、 Twisted/twisted.py. 複数のソース ファイルが必要な場合は、代わりにパッケージを作成し ( Twisted/twisted/、空の Twisted/twisted/__init__.py)、その中にソース ファイルを配置します。たとえば、 Twisted/twisted/internet.py.
  • 単体テストをパッケージのサブパッケージに入れます (注 - これは、上記の単一の Python ソース ファイル オプションがトリックであったことを意味します。単体テストには常に少なくとも 1 つの他のファイルが必要です)。たとえば、 Twisted/twisted/test/. もちろん、 でパッケージ化し Twisted/twisted/test/__init__.pyます。のようなファイルにテストを配置します Twisted/twisted/test/test_internet.py
  • addTwisted/READMEと Twisted/setup.pyを追加して、それぞれソフトウェアの説明とインストールを行ってください。

してはいけないこと

  • srcまたはという名前のディレクトリにソースを置きますlib。これにより、インストールせずに実行するのが難しくなります。
  • テストを Python パッケージの外に置きます。これにより、インストールされたバージョンに対してテストを実行することが難しくなります。
  • のみを持つパッケージを作成し、 __init__.pyすべてのコードを に入れます__init__.py。パッケージの代わりにモジュールを作成するだけで、より簡単になります。
  • Python がモジュールまたはパッケージをインポートできるようにするための魔法のハックを思いつくようにしてください。ユーザーはそれを含むディレクトリをインポート パスに追加する必要はありません (PYTHONPATHまたは他のメカニズムを介して)。すべてのケースを正しく処理できるわけではなく、ソフトウェアが自分の環境で動作しない場合、ユーザーは怒ります。
于 2009-10-02T13:48:36.787 に答える