Describe the feature / issue
For data safety it would be good to have the Species and Configuration class as truly immutable representations for the purposes of processing. In other words, we should remove any creative / destructive functions from them and put them all in something akin to EditableSpecies and EditableConfiguration classes. The latter would be passed to Generator procedures and then the contents of an immutable Configuration constructed from it once complete. Similarly, an EditableSpecies is the subject of drawing and other editing operations, and from which a Species is constructed afterwards.
If we do this it will clean up quite a few "what if's" and "maybe"s when it comes to potential data mutations in the basic classes.
Describe the feature / issue For data safety it would be good to have the
Species
andConfiguration
class as truly immutable representations for the purposes of processing. In other words, we should remove any creative / destructive functions from them and put them all in something akin toEditableSpecies
andEditableConfiguration
classes. The latter would be passed toGenerator
procedures and then the contents of an immutableConfiguration
constructed from it once complete. Similarly, anEditableSpecies
is the subject of drawing and other editing operations, and from which aSpecies
is constructed afterwards.If we do this it will clean up quite a few "what if's" and "maybe"s when it comes to potential data mutations in the basic classes.