Its not bad or defective, you can split the input to control exactly when you do one or the other… Its obvious the game can’t guess exactly what you want to do, no matter how many variables you try to check.
You can just learn how it works and not spam it.
FWIW it’s fine to use shift for both sprint and dodge; you can’t dodge forwards, and you can’t sprint backwards, so it doesn’t seem to mechanically hamper you much.