On 18 May 2008, at 18:28, Jens Carroll wrote:

I was not aware that "@xml_import.user.country.should equal(@country)" is already a trainwreck. I think I have even longer ones - refactoring might be the magic
word for my code now.

Well I guess it's more the wrong sort of leaves on the line :) It's not so much the length of the line that's the problem, that's just a code smell. The real issue is that it makes more sense for the user (domain model) to update itself off the XML, rather than have an XML parser (utility class) go poking around inside the user.

Having had a second look at it, I'd be inclined to say that XmlImport#parse_xml should really be a class method of User (something like User.import_all_from_xml). The only bit of this method that isn't domain logic is the line

  @doc = Hpricot.XML(open(file))

which should probably be in the controller, or wherever this code gets called. You don't want the domain logic depending on filesystem technicalities and more than the utility code fiddling with the model.

Ashley


--
http://www.patchspace.co.uk/
http://aviewfromafar.net/



_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to