Ruby duck typing

Old habits die hard. I am writing a set of Ruby classes for handling a variety of document types and my first inclination was to start to design a class hierarchy to factor out common behavior for processing different document types. Specifically, I am handling Word, OpenOffice.org and AbiWord documents. After a little thought I realized that the only common behavior is uncompressing and reading XML files for OpenOffice.org and AbiWord. Also, I only need one public method for my application: given a file path to a document return the plain text from the document.

Anyway, I will start with writing 3 unrelated classes – one for each document type. They will all implement one method signature for retrieving plain text for a document file. I am likely to eventually factor out some common code for processing OpenOffice.org and AbiWord documents, but I can put off that decision (it is better to refactor after you understand a problem better).

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>