2011-07-21 8 views
1

私は文字列(finalValue)を構成する方法は、入力に含まれる非null値の数に基づいています。だから私はそれが正常にパラメータの1つのdiffのない文字列(finalValue)のセッターメソッドをロードし、私が得る値に基づいてそれらを呼び出すことが大丈夫ですか?これは悪いプログラミングの練習ですか?Java setterメソッドの規約(セッターをオーバーロードするのは問題ありません)

public void setFinalString(String a){ 
    this.finalString = a; 
} 

public void setFinalstring(String a, String b){ 
    this.finalString = a + " --f " + b; 
} 

または私は私が手入力に基づいてfinalStringを構築する方法を持っているし、その後finalString用セッター(なしここでの過負荷)を呼び出すことができます。

Plsはセッターをオーバーロードしても問題ないと教えてください。どちらが良い方法でしょうか?

おかげ

+0

おそらくコード例を投稿できますか? –

答えて

4

はい、これはセッターが常にちょうどカプセル化されたプライベートIVARに渡されたパラメータを設定することになっている、間違いなく悪いアプローチです。

他のロジックは、時にはあなたがセッターにパラメータを設定すると

public setAge(int age) { 
    if (age >= 0) 
     this.age = age; 
    else 
     this.age = 0; 
} 

すなわち制限を持つように受け入れられているものの、セッターが持つべきなだけの論理であること、ないセッターのどこかでなければなりませんそれは間違いなく、それがivarに割り当てる値以上を受け取るべきではありません。

0

誰かがメソッドをオーバーライドできない場合は、の最後にというキーワードを入れる必要があります。それは、あなたがやりたいことと、他の開発者とのやりとり方法についてです。コミュニケーションの唯一の方法は、誤解を許さないコードと正しいメソッドシグネチャであることがあります。

Aproachは、あなたが持っているものによって異なりますが、開発者が使用したいと思っている場合にクラスをどのように見えるか考えて、質問することはできません。

あなたは(非常に幸運)幸運であれば、彼は同じようにアプローチします:)

2

おそらく、あなたの代わりにセッターの擬似ゲッターを使用したいですか?

private String a, b; 
public String setA(String a) { this.a = a; } 
public String setB(String b) { this.b = b; } 
public String getFinalString() { 
    if (a != null && b != null) 
     return a + " --f" + b; 
    if (a != null) 
     return a; 
    throw new Exception("Not enough parameters to construct final string"); 
} 
関連する問題