ディレクトリのバックアップを作成するプログラムを書いています。
次のアプローチのどれがコード編成に適していますか?
バックアップとZipロジック用に個別のクラスを作成する-
class BackupUtil:
def backup(self):
None
class ZipUtil:
def archive_dir(self):
None
または、次のように関数のネストを使用します-
class BackupUtil:
def backup(self):
def archive_dir():
None
None
一般に、内部関数が小さく、それを囲んでいる関数に対してのみ有用であることを明確にしたい場合。または、関数を返す必要がある場合。後者のシナリオは、一般的に内部関数が囲んでいる関数のスコープ内の変数に依存しているため、取るに足らないものであり、それを他の場所で宣言することはオプションではありません。その場合はラムダを使用できるかもしれませんが、1つの式よりも長いものはすべて完全な関数宣言が必要になります。
実装がなければ、この場合どちらを選択するべきかを言うのは困難です。クラスにすべてを入れる必要もないことを付け加えておきます。
TL; DR:関数のネストの特性が必要な場合は関数のネストを使用
関数のネストの使用例(ほとんどの場合、機能的なイディオム、頭の上部から外れているため、ほぼ確実に不完全です):
トレードオフ:
2つを別々にしておくことは、いくつかの理由で役立ちます。
1)どちらかのクラス(特にクラスの継承)を扱う際の柔軟性が向上します。
2)2つのクラスを、相互に独立して他のコードで使用できるモジュールに変換できます。
3)2つの機能のいずれか1つのみを使用する必要がある場合、不必要に大きなクラスを作成しないようにします。
4)関数を分離しておくと、後でこれらの関数を呼び出すときにコードが読みやすくなります
何かを明確にするのに役立つことを願っています。