0

private fieldとを使用するためのより良い方法は何private methodsですか?

プライベートメソッド内でプライベートフィールドを使用するのは適切ですか、それともパブリックメソッドからプライベートメソッドを呼び出すときにパラメータとして配置する方が良いですか?

分野:

private Item model;

1. パブリックメソッド:

...
if (model.getPrice() != null) {
 String formattedPrice = formatPrice();
}
...

プライベートメソッド:

private int formatPrice(){
 int price =  model.getPrice() + 10;
}

VS

2. パブリックメソッド:

if (model.getPrice() != null) {
 String formattedPrice = formatPrice(model.getPrice());
}
...

プライベートメソッド:

formatPrice(int price){
 int price = price + 10;
}
4

3 に答える 3

2

プライベートメソッド内でプライベートフィールドを使用するのは適切ですか、それともパブリックメソッドからプライベートメソッドを呼び出すときにパラメータとして配置する方が良いですか?

これは非常に主観的であり、あなたの好みや特定のケースにもよると思います。

一般的に、どちらのアプローチも私には有効だと思います。プライベートメソッドからプライベートメンバーにアクセスするのに問題はなく、パラメータとして渡すのにも問題はありません。

具体的な例としては、2番目の実装が少し好きです。プライベートメソッドはそこに自己完結型であり、パラメータ以外には依存しません。これにより、読み取り、テスト、および再利用が容易になります。modelあなたはその方法について推論し、その方法が何であるか、そしてその方法がどのように機能するかを知る必要なしにその正しさについて議論することができますgetPrice

于 2012-04-24T13:03:48.157 に答える
1

これが私が特定できる賛否両論です:

このバージョン...

    private int formatPrice() {
        // format model.getPrice()
    }

...間違ったものを価格としてフォーマットするという「問題」を回避できる可能性があり、多くの場所で呼び出すと数文字節約できる可能性があります。

このバージョン...

    private int formatPrice(int price) {
        // format price
    }

...(からだけでなく)さまざまなソースからの価格をフォーマットするために使用できますmodel.getPrice()が、呼び出しはもう少し言葉が多く、価格を表さない整数をフォーマットすることを妨げるものは何もありません。


しかし、私の意見では、2つのアプローチの間に大きな違いはありません。確かに、どちらか一方にとって十分な違いは、一般的に明らかに「より良い方法」ではありません。

于 2012-04-24T13:19:14.117 に答える
0

実装しているクラスの外部にプライベートメソッドが表示されないようにする場合は、プライベートメソッドを使用する必要があります。したがって、そのクラスのインスタンスを作成すると、そのプライベートメソッドにはアクセスできなくなります。

プライベートフィールドについては、同じロジックです。とにかくJavaで本当にプライベートなものは何もありません、とにかくリフレクションを使用してそれに到達することができます。

于 2012-04-24T13:00:41.080 に答える