I am not sure what is your point.I understand the conventions and practices used by professional engineers and the various pros and cons involved.
As for code breaking that is no more a risk for bitfields than it is for predefined offsets, one simply uses a typedefs header appropriate for the device, that is just as the explicit offset constants are defined per-device, so too can bitfields.
Clearly the typedefs I've defined so far pertain to STM32F407, for a different device I'd like define a slightly different set.
I'm doing this for personal edification and to gain a better understanding of the MCUs, this isn't my job, I don't have any customers.
When I use, for example,
RCC_MCO1Config(RCC_MCO1Source_PLLCLK, RCC_MCO1Div_4);
I understand exactly what it is doing. I don't need to know what bit in what register is being altered.

