2016-07-13 11 views
1

を使用していない、VSの文字列をCONCATしますカスタムメソッドは、私はこのようなコードを持っている方法

private static final String BR_TAG = "<br/>"; 

private ResourceBundle rb; 

public String create(){ 
    String result = addLine("some text"); 
    result = addLine("some text"); 
    result = addLine("some text"); 
    .... 
} 

public String addLine(String text){ 
    return rb.getString(text) + BR_TAG; 
} 

これは私の現在のコードですが、それが最適なのですか?たぶん別のメソッドを使って結果に行を追加するべきではないでしょうか? Iができ、メソッドaddLineせずにこのような本に:

public String create(){ 
    String result = rb.getString("some text") + BR_TAG; 
    result = rb.getString("some text") + BR_TAG; 
    result = rb.getString("some text") + BR_TAG; 
    .... 
} 

または私は私の方法にのStringBuilderを渡すと第三の選択肢を考えることができます。

public String create(){ 
    StringBuilder sb = new StringBuilder(); 
    addLine("some text", sb); 
    addLine("some text", sb); 
    .... 
} 

public void addLine(String text, StringBuilder sb){ 
    sb.append(rb.getString(text)).append(BR_TAG); 
} 

はあなたが最適な選択肢と思いますか?

+0

3番目のオプションとして、 'StringBuilder.apend()'は 'String'を返さず、' StringBuilder'のインスタンスを返します。 – avojak

+0

StringBuilderは通常、文字列の連結に比べて優れたオプションです。なぜあなたは自分のJavaコードにマークアップを持つのですか?通常、マークアップ(HTML)を実際のソースコードと区別するのが最善です。そのため、JSPや他の形式のテンプレートエンジンに移行することを検討してください。 –

+0

@avojak私は知っている、それは速いコピーペーストだったsry;) –

答えて

2

別の方法を使用してみませんか?

IMO、どちらもコードの美しさの点では最高です。しかし、パフォーマンスの面では、StringBuilderが多くの時間使用された場合、+よりも時間がかかりませんので、3番目の方が優れています。

コードをもっと美しく見せるには、Builderパターンを使用しますか?

public class LineBuilder { 
    private StringBuilder builder; 
    private static final String BR_TAG = "<br/>"; 

    public LineBuilder() { 
     builder = new StringBuilder(); 
    } 

    public LineBuilder addLine(String text) { 
     builder.append(text).append(BR_TAG); 
     return this; 
    } 

    public String build() { 
     return builder.toString(); 
    } 
} 

また<h1><strong>タグに追加addHeaderまたはaddStrongのような他の方法を追加することができます。

そして、あなたはこのようにそれを使用することができます:ちょうど良く見える

String result = new LineBuilder() 
    .addLine("Hello") 
    .addLine("World") 
    .addLine("Bye!") 
    .build(); 

関連する問題