2012-03-19 10 views
2

私はC++とJavaをしばらく使用していますが、最近はjqueryを使用しています。私はjqueryのチェーンスタイル関数に気づいた。私たちがC++/Javaのsetterをjqueryのように変更できるのであれば、私は思っていますか?例えば、我々のコードはjQueryのようにC++/Javaでチェーンスタイルのセッターを使用できますか?

class Person { 
    private String name; 
    private int age; 

    public String getName() { 
     return name; 
    } 

    public int getAge() { 
     return age; 
    } 

    public Person setName(String name) { 
     this.name = name; 
     return this; 
    } 

    public Person setAge(int age) { 
     this.age = age; 
     return this; 
    } 
} 

されている場合は、私たちが代わりに次のようなコードを書くことができ:我々はセッターの多くを持っている場合

Person person = new Person(); 
person.setName("Tom").setAge(20); 

、これはよりシンプルであるように思われます。

これはいい考えですか?私に賛成してくれますか?ちょうど私にあなたの意見を与えてください。ありがとうございました!

+0

この方法では何も問題はありません。また、組み込みユーティリティの中にはこのパターンを使用するものもあります(たとえば、 'StringBuilder'など)。個人的に私はそれが好きではありませんが、それは私だけです。それがあなたのために働くなら、それのために行く。 – aroth

+0

関連:http://stackoverflow.com/q/4899756/240633 – ergosys

+1

異なるセッターに同じオブジェクトを変更させる場合や、セッターのチェーンの最後にオブジェクトを保存する場合は、参照を返す必要があります。 –

答えて

4

これは、通常、メソッドチェーンとC++で呼ばれます。
メソッドの使用チェーン化はより重要な選択です。

メソッドチェインの最も一般的な使用方法は、iostreamライブラリです。
たとえばcout << x << ycout << xcoutを返す関数であるために機能します。

Named Parameter Idiomで通常使用されます。

+0

ありがとう!私はそれを学ぶよ! – devbean

5

これは一般にfluent interfaceを作成するために使用され、どの言語でも実装できます。

  • 長所:読みやすさを改善し、より簡潔なコードすることができますすることができます。
  • 短所:ブレークポイントは通常行ベースなので、デバッグが難しくなることがあります。
+0

ええ、これは本当です。 – devbean

0

メソッドチェインは、C++でうまく動作し、何も問題ありません。

ゲッター/セッター(別名アクセサーとミューテータ)を使用すると、チェーンを気にするだけで、コードにdesign problemsがあることがわかります。

関連する問題