"Rethink Algorithm, and perhaps rename it into something that is actually useful. Make it interface-driven. Make sure that the interface is minimal. It is okay to have an abstract base class implementing that interface, but it is not okay to require every analysis type to extend it, that is just a recipe for trouble because it encourages callers to use features that happen to be implementation details, rather than only what the interface defines.
Split the functionality of the Algorithm interface into several aspects:
display is separate from calculating the data,
PDF display is separate from screen output."
This kind of thing is also related to the proposed migration of some general calculations such as Pearsons r from coloc_2 into ops. see issue #12
Suggestion from Dscho:
"Rethink
Algorithm
, and perhaps rename it into something that is actually useful. Make it interface-driven. Make sure that the interface is minimal. It is okay to have an abstract base class implementing that interface, but it is not okay to require every analysis type to extend it, that is just a recipe for trouble because it encourages callers to use features that happen to be implementation details, rather than only what the interface defines.Split the functionality of the Algorithm interface into several aspects: display is separate from calculating the data, PDF display is separate from screen output."
This kind of thing is also related to the proposed migration of some general calculations such as Pearsons r from coloc_2 into ops. see issue #12