Phil Endecott wrote:
I believe it's not reasonable or realistic to ask Peter to refactor his code to the extent that e.g. Robert suggests. But it would be good, as Jan suggests, to make it easier to build alternative variants by re-using the "uncontroversial" parts of the Variant2 code. Peter, what do you think about this? I'm not suggesting that you explicitly make the various internal components (as listed by Jan) public interfaces, with docs etc., but just add enough comments for others to be able to work with it and perhaps break it into multiple files.
Implementation details are just that, implementation details; I prefer to be able to refactor and change them at will, as long as the public interface is unaffected. Encouraging people to use and depend on them is at minimum a commitment that they will not change, and that commitment would very likely need to be backed by unit tests.