Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对于可以在xml文件中存储某个对象并将其读回的类,什么是合适的名称?_Java_Oop_Naming Conventions_Naming - Fatal编程技术网

Java 对于可以在xml文件中存储某个对象并将其读回的类,什么是合适的名称?

Java 对于可以在xml文件中存储某个对象并将其读回的类,什么是合适的名称?,java,oop,naming-conventions,naming,Java,Oop,Naming Conventions,Naming,我有一个名为TestPlan的类(简单地说,假设它是一个普通的javabean) 我需要在xml文件中存储TestPlan实例(每个文件一个实例)。我所看到的最合适的方法是使用另一个类,它应该只做与xml相关的工作 它将有如下方法: public TestPlan parseTestPlanXml(InputStream xmlFile) { TestPlan testPlan = new TestPlan(); //parse xmlFile and set testPlan

我有一个名为
TestPlan
的类(简单地说,假设它是一个普通的javabean)

我需要在xml文件中存储
TestPlan
实例(每个文件一个实例)。我所看到的最合适的方法是使用另一个类,它应该只做与xml相关的工作

它将有如下方法:

public TestPlan parseTestPlanXml(InputStream xmlFile) {
    TestPlan testPlan = new TestPlan();
    //parse xmlFile and set testPlan fields via setters
    return testPlan;
}

public OutputStream writeTestPlanXml(TestPlan testPlan) {
    //the actual implementation just copies the original xmlFile, 
    //makes necessary modifications 
    //and writes it to ByteArrayOutputStream
    ...
}
你建议给这个班取哪个名字?(顺便说一句,如果你还可以为这两种方法推荐更好的名称,那么请不要犹豫)


谢谢

TestPlanXMLStreamer

就个人而言,我不相信人为地缩短我的类的名称,因此您可能会发现这个建议太长了

TestPlanToXMLFileProcessor

我考虑使用Writer而不是Processor,但希望避免与FileWriter之类的人产生潜在的混淆


理想情况下,您的类将更通用,可以用于除TestPlan对象之外的某些对象,然后您可以在其他项目中重用它,但我们都知道这并不总是可能的,甚至是不合理的。

如果类只负责加载/保存
TestPlan
对象,而且它没有其他类似的方法来加载/保存其他类的对象,可能是这样的

class TestPlanXmlMarshaller {
    public TestPlan load(InputStream xmlFile) {
        ...
    }

    public OutputStream save(TestPlan testPlan) {
        ...
    }
}
这样,根据测试计划,
TestPlan
XML
不会在方法名称中不必要地重复


但是,如果类处理多个类型,则
load
方法需要具有不同的名称,因为不能仅在返回类型上重载方法
save
可以使用不同的类型参数重载,但为了一致性,这两种类型都应该使用相同的命名约定。

这在我看来非常像一个序列化程序,所以TestPlanSerializer或TestPlanXmlSerializer(如果您想具体说明的话)。

TestPlan2XmlConverter怎么样

我还建议在设计上稍作修改:您的两个方法可以读取和写入XML字符串;这将使它们更加通用和灵活。然后你可以有另外两种相应的方法:

  • 一种方法是将XML文件读入XML字符串,然后对该字符串调用parseTestPlanXml
  • 另一个调用writeTestPlanXml,然后将生成的XML字符串写入XML文件

两个类:
TestPlanXMLReader
TestPlanXMLWriter
writeTestPlanXml返回一个输出流@弗里德:我还不清楚。TestPlanXml应在“保存”后通过网络发送。如果我认为有必要将其存储在本地计算机和远程计算机上,那么此方法将保存一个xml文件,另一种方法将通过网络发送文件内容。无论哪种方式,您的写入函数都必须写入某些内容,不是吗?您现在拥有的是一个返回其他人可以写入的流的函数,这对我来说没有意义。如何使用字符串使它们更灵活?流可以写入IO对象或内存中的表示—字符串始终位于memory中。我建议使用读写器而不是流,如果格式是基于文本的。@自由:嗯,也许我有点被我通常在C++中所做的方式所迷惑了。感谢您指出streams的功能。:-)这实际上是一个评论,而不是对问题的回答。请使用“添加评论”为作者留下反馈。如果我在两年前才有这样的见解…它是在低质量的后期评论中出现的,并且是作为SO清理程序的一部分完成的。。。老实说,我也有一些这样的帖子;)