When developing, I keep running into situations where it turns out better to separate the decision making logic vs the actual actions that arise from it.
A couple clear benefits have popped out when I separate decisions from actions:
Simpler to test
Logic to make a decision is often self-contained & stateless, and can be written with few, if any, dependencies.
You can pass real-time information, data from storage, user input, or whatever else - use dependency injection to make life easy.
Makes assumptions explicit
Instead of a morass of conditionals, you now have clearly labeled outcomes. It should be clear in the future if your assumptions about the array of possible outcomes is missing pieces.