What is the best practice when implementing a way to start a game when a previous game has been played and the game's variables have already some kind of values assigned to them?
The most naive answer would be to create a method that would set all the variables and objects the game uses to their default value.
However that would be obviously error prone in cases when some time later a new variable is added to the game and not added to the method where it's set to a default value - such cases could lead to impossible to track bugs when a game would work ok if started first time, but not thereafter.
This would also violate DRY principle as a variable would have a default value at two different places - in the place where it's used and in the method where it's reset.