同じクラスの別のパブリック メソッドからクラスのパブリック メソッドを呼び出すべきではないと誰かに言われました。私はそれについて何の問題も見ないので、今私はこれを理解することができません。メソッドが public と宣言されると、そのコントラクトは生涯にわたって固定されるため、別の public メソッドから呼び出しても問題はありません。
だから私はその声明が本当なのか、それとも別の公開APIから公開APIを呼び出しても大丈夫なのかわかりません[これは設計の観点からです]?
同じクラスの別のパブリック メソッドからクラスのパブリック メソッドを呼び出すべきではないと誰かに言われました。私はそれについて何の問題も見ないので、今私はこれを理解することができません。メソッドが public と宣言されると、そのコントラクトは生涯にわたって固定されるため、別の public メソッドから呼び出しても問題はありません。
だから私はその声明が本当なのか、それとも別の公開APIから公開APIを呼び出しても大丈夫なのかわかりません[これは設計の観点からです]?
他のパブリック メソッドからパブリック メソッドを呼び出すと、単体テストがより複雑になります。あるメソッドが同じクラスの別のメソッドに依存している場合、それをモックして個別にテストすることはできません。そのため、同じメソッドのテスト コードを 2 回記述する必要がある場合があります。
別のメソッドを呼び出すメソッドの単体テストも参照してください
あなたが試してみると、あなたのコンパイラはあなたに躊躇しますか? いいえ?その点では合法です。
この「アドバイス」を提供する人物は、標準を説明する正規の文書を (業界または組織内で) 作成していますか? いいえ?それでは感想です。
あなたの会社の基準を参照してください。そうでなければ、ナンセンスと呼びます。
同じクラスの他のパブリック メソッドからパブリック メソッドを頻繁に呼び出す場合は、おそらく不要なユーティリティ メソッドがあることを意味します。また、メンテナンスを容易にし、API を把握しやすくするために、もう少し DRY にする必要があるかもしれません。
しかし、これは単なる警告です。パブリック メソッドを別のメソッドから呼び出すことは完全に有効であり、それを実行するjava.lang
標準コードの例がたくさんあります。
からの例java.lang.String
:
1462 public boolean startsWith(String prefix) {
1463 return startsWith(prefix, 0);
1464 }
パブリック メソッドが他のパブリック メソッドを呼び出さないというルールを適用するためだけに、一部のメソッドをプライベートにしても意味がありません。
彼が何を意味したのか私にはわかりません。明らかに、別のパブリック メソッドからパブリック メソッドを呼び出すことができます。これは悪い考えではありません。Java のソースでさえ、ある public メソッドが別の public メソッドを呼び出すメソッドを持っています。
アドバイスをくれた人に理由を説明してもらいませんか?彼は私たちよりも言いやすい立場にあると思います。
もちろん、同じクラスまたは別のクラス内にあるかどうかにかかわらず、別のパブリック メソッドから任意のパブリック メソッドを呼び出すことができます。しかし、標準はさまざまな組織にとって重要です。彼/彼女の有効な例を挙げてください。