パブリックインターフェイス、メソッドの名前、APIとコードの理解に関連する設計上の問題があります。
このような2つのクラスがあります。
class A:
...
function collision(self):
....
...
class B:
....
function _collision(self, another_object, l, r, t, b):
....
最初のクラスにはcollisionという名前のパブリックメソッドが1つあり、2番目のクラスには_collisionという名前のプライベートメソッドがあります。 2つの方法は、引数のタイプと数が異なります。
例として、_collisionがオブジェクトが特定の条件を持つ別のオブジェクトと衝突しているかどうかをチェックするとしますl、r、t、b(左側、右側などで衝突)を返し、trueまたはfalseを返します。一方、public collisionメソッドは、オブジェクトと他のオブジェクトとのすべての衝突を解決します。
2つのメソッドの名前は同じですが、ほとんど同じことをするが、コンテキストとクラスが異なるメソッドには、異なる名前でデザインをオーバーロードしないようにした方がよいと思います。
これは読者にとって十分明確ですか、それともメソッドの名前を変更する必要がありますか?
これらの関数はどちらも衝突と関係がありますが、whatは非常に異なるため、実際に何を行うかをより明確に説明する名前を付けると、将来の開発者が違いを理解しやすくなります内部のロジックを見てください。
オブジェクトが別のオブジェクトと衝突しているかどうかをチェックするメソッドは、checkForCollision
と呼ばれます。
オブジェクトと他のオブジェクトの衝突を解決するメソッドは、resolveCollisions
またはhandleCollisions
と呼ばれます。
2つの関数がほとんど同じことをする場合、多くの場合best timeは、それらの違いを明確にするためにより具体的な名前を付けます。
これには何の問題もないと思います。メソッドのオーバーロードは、いくつかの理由から、かなり標準的な方法です。まったく同じ機能を使用していて、2つの異なる一連のパラメーターについてのみ、同じ正確な名前を使用することは完全に意味があり、パラメーターリストが2つの関数の実際の唯一の違いであることを明確にするのにも役立ちます。それは本当にそれをサポートする言語でコーディングすることをより簡単にします。
これらの2つの関数が2つのわずかに異なることを実行すること(A.collision()はB._collision()よりも一般的です)に関しては、この場合、2つの理由で問題ありません。
彼らは本当に過負荷ではありません。 "collision" <> "_collision"(Pythonがここで何か知らない場合を除いて)。
彼らは本当に過負荷ではありません。クラスA <>クラスB。基本名が同じでも、他のプログラマーは2つの異なるクラスの関数をかなり簡単に区別できるはずです(一方が他方をサブクラス化している場合を除く)。クラスが異なれば、明らかに物事も異なる傾向があります。
素人の言葉で:
例えば
// there's absolutely no problem with this totally unrelated (or related) classes:
databaseClient.connect();
odbcSource.connect();
navii.connect();
fireHose.connect();
短い答え:何も問題はありません。