2011-08-09 7 views
0

文字列を解析するクラスがあり、文字列がnullでも空の文字列でもない場合は、サブクラスのタイプに応じてオブジェクトを使用して新しいStringまたはnew Dateを作成します。文字列がnullまたは空の場合は、空の文字列を返します。現在、私はこのクラスコンバーターを呼び出していますが、私はこの名前が誤解を招くと感じています。このクラスが何をしているのか誰もが考えることができる良い名前がありますか?私はコードを読みやすくする直感的なものを求めています。ありがとう。ヘルプネーミングクラスが必要

public abstract class Converter { 
    Object returnObject; 

    public Converter() { 

    } 

    public Object convert(String value) 
    { 
     if(!this.isEmpty(value)) 
     { 
      this.setReturnObject(value);  
     }else 
     { 
      this.returnObject = ""; 
     } 
     return this.getReturnObject(); 
    } 

    protected boolean isEmpty(String value) 
    { 
     return (value != null && value.equalsIgnoreCase("")); 
    } 

    protected abstract void setReturnObject(String value); 

    protected Object getReturnObject(){ 
     return this.returnObject; 
    } 
} 

public class NumberConverter extends Converter { 
    public NumberConverter() { 
    } 

    protected void setReturnObject(String value) { 
     this.returnObject = new Number(Integer.parseInt(value)); 
    } 
} 
+1

私はそれがここに属していると思う:http://english.stackexchange.com/ :) – MByD

+2

私は正しいフォーラムにいると思う。名前を付けることは、少なくともUncle Bobの書籍によれば、可読コードを生成する上での大きな部分です。 –

答えて

2

EntityMapperまたはEntityTransformerのいずれかを使用できます。

+0

私は、トランスフォーマー –

+1

が目に会う以上に好きです.... –

0

抽象クラスには、その中にメソッド定義が含まれていないと思います... !! そのことをまずチェックしてください!!

と命名については、私はサスウィックに同意します。おかげさまで :)

+0

抽象クラスにメソッド定義を含めることができます。これは有効なケースです。インターフェイスには、メソッド定義だけを持つことができません。 – Sathwick

+0

@indyaah、抽象クラスが意味するものにその中にメソッド定義が含まれていないかどうか分かりません。実装者がオーバーライドしなければならない抽象メソッドを意味する場合は、以下を参照してください。protected abstract void setReturnObject(String value); ? –

+0

はい.. 私の間違い... 私は抽象クラスとインターフェイスの間で混乱していると思います。 –

0

文字列を取り、それを解析するので、私は "パーサー"と言うでしょう。

2

'エンティティ'プレフィックスは、クラスがエンティティではなく文字列を取っているため、適切ではありません。

また、元の値が変更されないので(私が変圧器(またはコンバーター)を選択することもありません。

私はStringMapper、または多分StringParser(Burleigh Bearによって提案されたように)に行きます。

メモでは、ジェネリックを使用して、マップされた/解析されたタイプを指定し、このコードをもう少しタイプセーフにすることができます。