2011-08-09 322 views
0

我有一个类来分析一个字符串,如果字符串不是空字符串,它会根据子类的类型使用该对象创建一个新的String或new Date。如果字符串为空或空,它将返回一个空字符串。目前我称之为类转换器,但我觉得这个名字是误导性的,有没有更好的名字,任何人都可以想到这个类正在做什么?我想直观的东西让我的代码更具可读性。谢谢。需要帮助命名类

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

我想我是在正确的论坛。命名是生成可读代码的一个重要组成部分,至少根据鲍勃叔叔的书籍Clean Coder和Clean Code –

回答

2

您可以使用EntityMapper或EntityTransformer。

+0

我喜欢Transformer –

+1

多于满足眼睛。 –

0

我想抽象类不包含任何方法定义里面...! 最好先检查一下这个东西.. !!

就命名而言,我会同意sathwick。 谢谢。 :)

+0

抽象类可以包含方法定义。这是一个有效的案例。只有接口不能有方法定义。 – Sathwick

+0

@indyaah,我不确定你的意思是什么抽象类不包含任何内部的方法定义?如果你指的是实现者必须覆盖的抽象方法,你会看到:protected abstract void setReturnObject(String value); ? –

+0

是的.. 我的错误... 我想我在抽象类和接口之间感到困惑。 –

0

既然你正在一个字符串和解析它,我会说“解析器”。

2

'实体'前缀不合适,因为该类没有采用实体,而是一个字符串。

我也不会选择变压器(或转换器),因为原始值不会改变(是一种不可变的String类型的规则)。

我会去的StringMapper或可能StringParser(由伯利熊建议)。

在附注上,您可以使用泛型来指定映射/解析类型,并使此代码更安全一些。