And then you can set the SpringArm to use PawnControlRotation by default as well:
SpringArm->bUsePawnControlRotation = true;
I agree with you that it is a good way of doing it, especially for those who are planning on creating an actual game, with a team. As we start adding features to the camera system, it is very likely that we will want to set all the values that make sense for the game in C++ by default and expose the tweakable parameters to Blueprint so that we have at least a working player every time we create a new one instead of having the designers troubleshoot why the camera rotation and other basic things are not working as expected.
Here are the default values I used, so that we get at least decent camera positions by default (you can always tweak them in BP afterwards, but at least if you reset them to default you get usable values where the camera is position slightly to the right and still works when the player is right next to a wall):
// ShooterCharacter.h
private:
FVector DefaultCameraBoomLocation = FVector(0.0f, -15.0f, 90.0f);
// ShooterCharacter.cpp
SpringArm->SetRelativeLocation(DefaultCameraBoomLocation, false,nullptr, ETeleportType::ResetPhysics);
SpringArm->TargetArmLength = 250.0f;
SpringArm->SocketOffset = FVector(0.0f, 35.0f, 10.0f);
SpringArm->TargetOffset = FVector(0.0f, 10.0f, 15.0f);