One day one implements, say, propulsion system that can accelerate/deccelerate/rotate one’s ship based on given order. The other day one implements a nice “moving to given point” method that gives orders like accelerate → move at constant speed & rotate to given direction → deccelerate. The third day one wants to add more complicated task like, say, patroling: “moving to p1” → “moving to p2” → “moving to p3” → loop Every time one wants to use the same nice “moving to given point” code. So component receives a transient field that indicates just inner state of the system, number of checks in method grows…
One just can’t get rid of imperative thinking or what?