申し訳ありませんが、他のほとんどの「はい」の回答に同意する必要があります。
あるパブリックメソッドを別のパブリックメソッドから呼び出すクラスを推奨しません
このプラクティスにはいくつかの潜在的な問題があります。
1:継承クラスの無限ループ
そのため、基本クラスはmethod2からmethod1を呼び出しますが、ユーザーまたは他の誰かがそれを継承し、method2を呼び出す新しいメソッドでmethod1を非表示にします。
2:イベント、ロギングなど
たとえば、イベント '1 added!'を起動するメソッドAdd1があります Add10メソッドでそのイベントを発生させたり、ログなどに10回書き込んだりすることはおそらくないでしょう。
3:スレッド化およびその他のデッドロック
たとえば、InsertComplexDataは、db接続を開き、トランザクションを開始し、テーブルをロックします。次に、InsertSimpleDataを呼び出し、接続を開き、トランザクションを開始し、テーブルがロック解除されるのを待ちます。
他の理由もあると確信しています。他の答えの1つは、「method1を編集し、method2が異なる動作を開始することに驚いている」というものです。
一般に、コードを共有する2つのパブリックメソッドがある場合は、一方が他方を呼び出すのではなく、両方がプライベートメソッドを呼び出す方が良いでしょう。
編集----
OPの特定のケースを展開してみましょう。
詳細はあまりありませんが、ReverseDataは、ScheduleTransmissionメソッドだけでなく、何らかの種類のイベントハンドラによって呼び出されることはわかっています。
リバースデータはオブジェクトの内部状態も変化させると思います
この場合、スレッドの安全性が重要であると考えられるため、この慣行に対する3番目の異議が適用されます。
ReverseDataスレッドセーフにするために、ロックを追加できます。ただし、ScheduleTransmissionもスレッドセーフである必要がある場合は、同じロックを共有する必要があります。
これを行う最も簡単な方法は、ReverseDataコードをプライベートメソッドに移動し、両方のパブリックメソッドがそれを呼び出すようにすることです。次に、パブリックステートメントにロックステートメントを配置し、ロックオブジェクトを共有できます。
明らかに、「それは決して起こらない!」と主張することができます。または「ロックを別の方法でプログラムできます」が、適切なコーディングの実践に関するポイントは、そもそもコードを適切に構造化することです。
学問的に言えば、これは確かにLに違反しています。パブリックメソッドは、パブリックにアクセスできるだけではありません。また、継承者によって変更可能です。コードは変更のために閉じられる必要があります。つまり、パブリックメソッドとプロテクトメソッドの両方でどのような作業を行うかを考える必要があります。
別のヘレスもあります。あなたもDDDに違反する可能性があります。オブジェクトがドメインオブジェクトの場合、そのパブリックメソッドは、ビジネスにとって意味のあるドメイン用語である必要があります。この場合、「1ダースの卵を購入」が「1個の卵を12回購入」と同じように開始することはほとんどありません。