Sometimes two parts are required to satisfy a constraint
because of outside requirements.
For example, a Read part and a Write part both need to
agree on a file format in order to read and write files. If
the file format changes both parts will need to change.
You should try to localize functionality in one part. That
is, use a single point of control.
More generally, every piece of knowledge in your program
should be expressed once and only once.