私の現在の仕事では、CPUを集中的に使用するデータ処理を行う長時間実行(数時間から数日と考えてください)スクリプトを作成しています。プログラムフローは非常に単純です。メインループに進み、メインループを完了し、出力を保存して終了します。私のプログラムの基本構造は次のようになりがちです。
<import statements>
<constant declarations>
<misc function declarations>
def main():
for blah in blahs():
<lots of local variables>
<lots of tightly coupled computation>
for something in somethings():
<lots more local variables>
<lots more computation>
<etc., etc.>
<save results>
if __name__ == "__main__":
main()
これはすぐに管理できなくなるので、より管理しやすいものにリファクタリングしたいと思います。実行速度を犠牲にすることなく、これをより保守しやすくしたいと思います。
ただし、コードの各チャックは多数の変数に依存しているため、計算の一部を関数にリファクタリングすると、パラメーターリストがすぐに手に負えなくなります。この種のコードをPythonクラスに入れて、ローカル変数をクラス変数に変更する必要がありますか?プログラムをクラスに変換することは、概念的にはあまり意味がありません。クラスが再利用されることはなく、インスタンスごとに1つのインスタンスしか作成されないためです。
この種のプログラムのベストプラクティスの構造は何ですか?私はPythonを使用していますが、最新のオブジェクト指向言語機能を想定すると、質問は比較的言語に依存しません。