1. ホーム
  2. python

[解決済み] models.pyが巨大化しているのですが、分割するのに一番良い方法は何ですか?

2023-02-20 18:20:31

質問

上司からの指示です。 の中にロジックを入れないようにしたい。 models.py . 今後は、データベースへのアクセスのためのクラスとしてのみ使用し、すべてのロジックはモデルクラスを使用する、またはラップする外部クラスで管理しましょう"。

これは間違った方法のような気がします。ファイルを小さく保つために、ロジックをモデルから除外するのは悪い考えだと感じています。ロジックがモデル内で最善であるならば、ファイルサイズに関係なく、本当にそこに行くべきです。

では、includeを使用するだけの簡単な方法はあるのでしょうか?PHP用語で言えば、私は監修者に、単に models.py に他の場所からモデルクラスをinclude()することを提案したいと思います。概念的には、これはモデルに必要なすべてのロジックを持たせることができ、かつ、ファイル数を増やすことによってファイルサイズを抑えることができます (これは競合などのリビジョン管理の問題を少なくすることにつながります)。

では、models.py ファイルからモデルクラスを削除しても、モデルがすべての Django ツールで動作するような簡単な方法はあるのでしょうか?あるいは、models.py ファイルが大きいという一般的な問題に対して、全く別の、しかしエレガントな解決法があるのでしょうか?どんな意見でもいいので、よろしくお願いします。

どのように解決するのですか?

Django は、1つの大きなアプリケーションではなく、多くの小さなアプリケーションを構築できるように設計されています。

すべての大きなアプリケーションの内部では、たくさんの小さなアプリケーションが自由であろうと闘っています。

もしあなたの models.py が大きく感じられたら、やりすぎです。 やめてください。 リラックスしてください。 分解してください。

より小さく、再利用可能な小さなアプリケーションの部品、または断片を見つけます。 このとき 実際に それらを再利用する必要はありません。 ただ、再利用できる可能性があると思えばいいのです。

アップグレードパスを検討し、いつか置き換えたいと思うようなアプリケーションを分解してください。 このとき 実際に しかし、将来よりクールなものに置き換わるかもしれない、独立したプログラミングのモジュールとして考慮することは可能です。

私たちには約12のアプリケーションがあり、それぞれ model.py は約 400 行以下のコードです。 これらはすべて、約半ダース以下の個別のクラス定義にかなり集中しています。(これらは厳しい制限ではなく、私たちのコードについての観察です)。

私たちは早期に、そして頻繁に分解します。