0

抽出とオーバーライドのリファクタリングを実践するとき、抽出されたメソッドのアクセス修飾子がプライベートからプロテクトに変更される非常に熟練したコーチやトレーナーの例がよくあります。

protected CollectResultReader loadRecordFromOutFile() {
    return CollectResultReader.factory("../record.json");
}

上記のコードが抽出された例では、IDE はターゲット コードにプライベート修飾子を含む新しいメソッドを作成しました。それが望ましい動作です。テスト中のクラスをオーバーライドできるようにするために、保護された状態で再編集されました。これは、製品コードが読みにくくなり、望ましくないアクセスが得られることを意味するため、望ましくありません。

純粋な Java を使用し、モッキング フレームワークを使用しないことに注意してください。単体テストを同じパッケージ内の別のパスに保管しています。

私の質問:メソッド パッケージを非公開 (修飾子なし) にしないのはなぜですか?

クラスのメンバーへのアクセスの制御で、パッケージの private 修飾子を参照してください。

4

1 に答える 1

0

テスト クラスを同じパッケージに保持できる限り、それを作成する理由はありませんprotected。パッケージプライベートで十分です。

私は、それらを保護することを余儀なくされたプロジェクトで働いてきました。その理由は、パッケージ private は平均的な Java 開発者が知っているものではないからです。

于 2016-11-17T12:12:01.213 に答える