-
Edward Fauchon-Jones authored
The `Spec` class family were originally set up to work using class methods. This was natural because each `Spec` derivative only represented a single field. With the addition of the `Amplm` and `Phaselm` specs, this was no longer true, with each of these specs required to represent a collection of fields. While initially attempted to use instances for these `Specs` and classes+classmethods for the remaining specs, to much off the logic required casing on the `Spec` being an instance of class, it was decided to only use classes and classmethods. In the end this resulting in a massive anti-pattern, defining a class factory in place of instance initialisers in the `Amplm` and `Phaselm` classes, and a general bad logic. It made sense to use classmethods before, but in no longer did. This commit refactors most classmethods as instance methods (with a couple left as classmethods because theydo not reference the parent object, and could infact be staic methods). While a couple of expressions required additional `()` to instance `Specs`, overall the logic has been greatly simplified and actually demonstrated that the classmethod paradigm previously used had significantly little benifit.
4c054494