12

同じクラスの別のパブリック メソッドからクラスのパブリック メソッドを呼び出すべきではないと誰かに言われました。私はそれについて何の問題も見ないので、今私はこれを理解することができません。メソッドが public と宣言されると、そのコントラクトは生涯にわたって固定されるため、別の public メソッドから呼び出しても問題はありません。

だから私はその声明が本当なのか、それとも別の公開APIから公開APIを呼び出しても大丈夫なのかわかりません[これは設計の観点からです]?

4

7 に答える 7

11

他のパブリック メソッドからパブリック メソッドを呼び出すと、単体テストがより複雑になります。あるメソッドが同じクラスの別のメソッドに依存している場合、それをモックして個別にテストすることはできません。そのため、同じメソッドのテスト コードを 2 回記述する必要がある場合があります。

別のメソッドを呼び出すメソッドの単体テストも参照してください

于 2013-06-03T13:03:43.760 に答える
11

あなたが試してみると、あなたのコンパイラはあなたに躊躇しますか? いいえ?その点では合法です。

この「アドバイス」を提供する人物は、標準を説明する正規の文書を (業界または組織内で) 作成していますか? いいえ?それでは感想です。

あなたの会社の基準を参照してください。そうでなければ、ナンセンスと呼びます。

于 2013-02-07T10:21:49.063 に答える
7

同じクラスの他のパブリック メソッドからパブリック メソッドを頻繁に呼び出す場合は、おそらく不要なユーティリティ メソッドがあることを意味します。また、メンテナンスを容易にし、API を把握しやすくするために、もう少し DRY にする必要があるかもしれません。

しかし、これは単なる警告です。パブリック メソッドを別のメソッドから呼び出すことは完全に有効であり、それを実行するjava.lang標準コードの例がたくさんあります。

からの例java.lang.String:

1462    public boolean startsWith(String prefix) {
1463        return startsWith(prefix, 0);
1464    }

パブリック メソッドが他のパブリック メソッドを呼び出さないというルールを適用するためだけに、一部のメソッドをプライベートにしても意味がありません。

于 2013-02-07T10:23:11.157 に答える
1

彼が何を意味したのか私にはわかりません。明らかに、別のパブリック メソッドからパブリック メソッドを呼び出すことができます。これは悪い考えではありません。Java のソースでさえ、ある public メソッドが別の public メソッドを呼び出すメソッドを持っています。

アドバイスをくれた人に理由を説明してもらいませんか?彼は私たちよりも言いやすい立場にあると思います。

于 2013-02-07T10:22:16.173 に答える
0

もちろん、同じクラスまたは別のクラス内にあるかどうかにかかわらず、別のパブリック メソッドから任意のパブリック メソッドを呼び出すことができます。しかし、標準はさまざまな組織にとって重要です。彼/彼女の有効な例を挙げてください。

于 2013-02-07T10:46:11.970 に答える