My daughter is 7 now and I can count the times I have legitimately yelled at her on one hand. I have always talked to her, reasoned things out, etc. I prioritize her psychological health over anything else- us being late, me being tired, whatever. And I NEVER hit her. Or "spank" her (which is hitting, stop pretending otherwise).
I have always had a policy of "treat her like I'd like to be treated." No one would want to be yelled at or hit by someone six times their size, so why would we expect fragile little children to tolerate that? It's totally unfair (but I get it!!!! they don't understand our job and how they unintentionally make it harder and what we feel/go through, especially as single parents; we're tired, stressed, dissatisfied, etc....I do get it!).
People around me try to convince me to "toughen up" as they think sometimes things "take too long" (just yell and she'll do it right away, they say) but again my priority is her not me or them. Everyone always uses the running on the road example (what if she ran onto the road without looking, you're going to "talk" it out?) but she never does anything like that and she listens very well. She respects me because I treat/see her as a real person and I make sure to care about how she is feeling. In turn she doesn't want to disappoint me so she tries her best to be a helpful girl.
I know it's tough. We're tired, we're frustrated, the list of things to do never ends. But you have to keep in mind the nature of children, understand it and work with them- don't hold them responsible for their nature (they had nothing to do with it). Ask yourself why you yelled or hit and you'll realize your answers don't actually justify the response. It's always "we were going to be late or I said it four times already!" which really means "it didn't happen when I wanted it to" which is never worth even a minuscule amount of fear, anxiety, or hit to self confidence that they can (and do) experience. They are fragile and they need us to be on their side.