web-dev-qa-db-ja.com

大きなモジュールを分割することの悪影響はありますか?

私はgithubプロジェクトを閲覧していて、1万行を超えるこのモジュールを見つけました。

単一のモジュールに多くのコードを含めることは一般的な方法ですか?

これは複数のモジュールに分割する必要があるようです。たぶん、dbエンジンごとに1つ。

このように巨大なモジュールを1つ作成することで(「すべてを1か所にまとめる」以外)、開発者はそれを分割することでどのような欠点がありますか(「複雑さ」以外)。

23
Mahmoud Hossam

あなたが遭遇したのは、いわゆる「 神オブジェクト 」です。それから逃げます(可能であれば)。

モジュールごとに明確なLOCの数はありませんが、コードを参照し、メソッドが何をしているかを簡単に理解できるものでなければなりません。私の個人的な経験から、モジュールが1k行を超える場合*、あなたは何か間違ったことをしています。

* 1kラインモジュールでも非常に大きいです。

14
BЈовић

これは、一般的なサイズ制限が適用されない可能性があるモジュールのようです。機能の大部分は、コードとコメントの最初の2k行にあります。ファイルの残りの部分は、モジュールに密結合されているように見える多くのアダプタークラスと他のサポートクラスのようです。他の言語では、クラスは妥当なサイズの個別のファイルにあります。

さらに便利なdocストリングがいくつかあるかもしれませんが、それらはすでに大きなモジュールのサイズを増やします。コードは明確で自明であり、必要に応じて適切なコメントが付いています。

7
BillThor

もちろん、実際の「制限」は、プロジェクトやさまざまな要因によって異なります。

しかし、私は経験則に沿って次のように説明します。200 linesまともなPythonのつまり、CやJava Pythonで記述されたコードはありませんが、PythonではPythonが適切です。

5
nperson325681

ワオ。

私はこれの完全な答えはわかりませんが、タイトルの質問に対する答えとして考えるのが好きです。「Pythonモジュールはどれくらいあるべきですか?」シークレットを非表示にする-この場合、モジュールはそれを適切に実行しているように見えます(このような大きなシークレットは非表示になります)。

結合と凝集について多くのことを話している論文を後で掘り下げています。たぶん、多くのdbモジュールがあると、モジュール間の呼び出しが多すぎて、悪い習慣と見なされるもの、つまり凝集度が低く、カップリングが高くなることにつながりますか?

プログラマーが、良い習慣が何であれ、単純化と理解のために良い習慣を犠牲にすることを決めているという実験的なデータを見てきました。実際、グッドプラクティスの間にも矛盾がある可能性があります。たとえば、パフォーマンスは通常、後でメンテナンスを行う人々を幸せにするものではありません。この場合、このような大きなモジュールを使用すると、読みやすさがどのように改善されるかはよくわかりません。

私が気づいたもう1つのことは、コードの一部がジェネリックとして記述されており、残りのデータベースはそれから拡張されていることです。私はpythonプログラマーではありませんが、おそらくこれは何かを正当化できるでしょうか?

だから、私は最終的な答えはありませんが、誰かがこれらのポイントを強調することを願っています!

1