Separate command validation from execution #85
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary:
Command
class now has two abstract methods,validate
andexecute
, and one concrete method,run
.run
executes the command with validation (just like the previous execute) andexecute
is the same but with NO validation.validate
andexecute
are supposed to be internal methods, whilerun
is exposed for public use (e.g.LogicManager
, tests, etc).Reason for separation:
run
to store the model's state after validation but before execution.I have already modified test names and utilities to adhere to this naming. All tests have passed.
Implications for future developments:
validate
even when it does not need validation (look at what I did forexit
, etc).execute
.