2010-10-23 5 views
0

J'ai une classe qui s'appelle TestPlan (pour faire simple, supposons que c'est un bean java habituel).Quel est le nom approprié pour une classe qui peut stocker un objet dans un fichier xml et le lire?

Je dois stocker TestPlan instances dans des fichiers xml (1 instance par fichier). La façon la plus appropriée de le faire que je peux voir est d'utiliser une autre classe qui ne devrait faire que du travail lié à xml.

Il faudra des méthodes telles que:

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 
    ... 
} 

nom qui proposeriez-vous pour cette classe? (BTW, si vous pouvez également suggérer de meilleurs noms pour ces 2 méthodes, alors n'hésitez pas à le faire).

Merci!

+0

writeTestPlanXml _returns_ un OutputStream !? – SoftMemes

+0

@Freed: Je ne sais pas encore exactement. TestPlanXml devrait être envoyé sur le net après 'sauvegarde'. Si je vois la nécessité de le stocker sur la machine locale ainsi que sur la machine distante alors cette méthode va enregistrer un fichier xml et une autre méthode va simplement envoyer le contenu du fichier sur le net. – Roman

+0

de toute façon, votre fonction d'écriture devra écrire à _quelque chose, non? Ce que vous avez maintenant est une fonction qui retourne un flux auquel quelqu'un d'autre peut écrire, ce qui n'a pas de sens pour moi. – SoftMemes

Répondre

1

Si la classe est uniquement responsable des objets de chargement/enregistrement TestPlan, et il n'a pas d'autres méthodes similaires pour charger/enregistrer des objets d'autres classes, il pourrait être

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

    public OutputStream save(TestPlan testPlan) { 
     ... 
    } 
} 

De cette façon, conformément à la DRY principle, TestPlan et XML ne sont pas répétées inutilement dans les noms de méthodes.

Toutefois, si la classe traite plusieurs types, les méthodes load doivent avoir des noms distincts car une méthode ne peut pas être surchargée sur le type de retour uniquement. save serait bien de surcharger avec des paramètres de type différents, mais pour la cohérence, la même convention de nommage devrait être utilisée pour les deux.

0

TestPlanXMLStreamer

+0

Ceci est vraiment un commentaire, pas une réponse à la question. Veuillez utiliser "ajouter un commentaire" pour laisser un commentaire à l'auteur. – oleksii

+0

Si j'avais seulement cette idée il y a 2 ans ... – Kdeveloper

+0

Il est venu dans l'examen post qualité Low et il est fait dans le cadre de la procédure de nettoyage SO ... Honnêtement, j'ai eu quelques messages de ce genre aussi;) – oleksii

0

Personnellement, je ne crois pas dans les noms raccourcissant de mes cours artificiellement, vous trouverez peut-être cette suggestion d'être à longue.

TestPlanToXMLFileProcessor

Je considère Writer à la place du processeur, mais voudrait éviter toute confusion possible avec les goûts de FileWriter etc.

Idéalement votre classe serait plus générique et pourrait utiliser pour certains objets autre qu'un objet TestPlan, vous pouvez le réutiliser dans d'autres projets, mais nous savons tous que ce n'est pas toujours possible ou même raisonnable.

1

Cela ressemble beaucoup à un sérialiseur, donc TestPlanSerializer ou TestPlanXmlSerializer si vous voulez être spécifique.

0

Que diriez-vous de TestPlan2XmlConverter?

Je recommanderais également un léger changement de conception: vos deux méthodes pourraient lire et écrire dans des chaînes XML; cela les rendrait un peu plus génériques et flexibles.Et alors vous pourriez avoir deux autres méthodes correspondantes:

  • un pour lire un fichier XML dans une chaîne XML, puis appeler parseTestPlanXml sur cette chaîne
  • l'autre pour appeler writeTestPlanXml puis écrire la chaîne XML résultant à un fichier XML
+0

Comment l'utilisation de chaînes les rend plus flexibles? Les flux peuvent écrire dans les objets IO ou dans les représentations de la mémoire - les chaînes sont toujours dans la suite. Je suggère d'utiliser Reader et Writer plutôt que des flux, cependant, si le format est connu pour être basé sur le texte. – SoftMemes

+0

@Freed: Euh, peut-être que je me suis un peu laissé emporter par la façon dont je le ferais normalement en C++. Merci de souligner les capacités des flux. :-) – knightofmathematics

0

Deux classes: TestPlanXMLReader et TestPlanXMLWriter

Questions connexes