0

多数のネストされた条件を含むインスタンス メソッドがあるとします。そのコードをカプセル化する良い方法は何でしょうか? 同じクラスまたは関数の別のインスタンス メソッドを入れますか? 特定のアプローチが好まれる理由を教えてください。

4

2 に答える 2

0

ここには 2 つの異なる質問があります。最初のものは、複数のネストされた条件文をどうするかです。正解は 1 つではありません。それは、コーディング スタイル、条件がどのように相互作用するか、プログラムのアーキテクチャなどによって異なります。アイデアについては、この Programmers.SEの質問とJeff Atwood のブログ投稿をご覧ください。個人的には好き

if not check1: return
code1

if not check2: return
code 2

...

複数の出口点に反対する人もいますが。


2 番目の質問は、オブジェクト指向の Python を作成している場合、個々の関数をどうするかということです。通常の答えは、関数を特定のクラスにアタッチする必要がないため、クラスを含むモジュール内に関数として配置することです。ただし、必要に応じて、それらを静的メソッドとしてクラスに含めることができます。

于 2012-08-26T10:34:06.837 に答える
0

関数が 1 つのクラスによってのみ使用される場合、特にモジュールに潜在的により多くのユーティリティ関数 (1 つのクラスによってのみ使用される) を持つ複数のクラスがある場合、明らかにする代わりに関数を静的メソッドとして保持すると、少し明確になる可能性があります。彼らがどのクラスに属しているか。また、自動化されたリファクタリング (たとえば、rope ライブラリ、または PyCharm または PyDev などを使用) は、クラスが移動される場所にクラスと共に静的メソッドを自動的に移動します。

PS @staticmethodは、モジュールレベルの関数とは異なり、サブクラスでオーバーライドできます。たとえば、オブジェクトに依存しないがオブジェクトの型に依存する数式の場合です。

于 2012-08-26T13:16:51.583 に答える