I keep OB1 as small as possible and as easy to understand how the program works. Pretty much everything else is in FBs and FCs as required to store or not store data. So as you read OB1 there is very little code in it, just calls to appropriately named FB/FCs that then tells the story of the program. If there is something that needs to run all the time but doesn't tell the story of the program it goes in to a 'Continual' FC.
I have separate DBs for:
Factory Settings,
Data that the operator enters that needs to be stored,
Data that the operator enter that doesn't need to be stored,
Timers DB,
Counters DB,
Data that is displayed on an HMI,
Data that is just used within the program,
Data that is shared with other PLCs,
Date and Time.
etc, etc.
Different types of program need different structures. Something that runs Step by Step, if different from something that takes data in, processes it, and passes data out.