Suppose I have two "modules", A
, and B
(I'm choosing not to use classes, because you generally can't create an instance of a module, which makes this question simpler). These modules contain methods suited for dealing with the same particular type of (arbitrary) data. Crucially, the representation/format of this data is different between A
and B
.
At some point we have a piece of data which is in a format which one of the two modules "understands", but the other does not, and the programmer has a desire to "convert" the piece of data from one representation to another.
For the sake of example, lets say we have data which is in a format that module A
understands, but module B
does not. On which of the two modules should I place the method that converts the data from "A
representation" to "B
representation"?
To explore the question a bit, it seems that we have to choose one of the following to be true:
- A given module knows how to convert data from another format, to the format it understands
- A given module knows how to convert data from the format it understands, to another format
In either scenario, in order for a conversion to take place, a given module must contain information about the data representation/format of a module other than itself in order to perform a conversion. From an OOP design or separation-of-concerns perspective, this seems like a bad idea.
Is introducing a third module, C
, which understands how to convert the data between different representations, a more sane way to approach this?