I understand where you're coming from. It's not a technique for beginners. But it has some powerful applications too. There is more discipline to it that I've mentioned. I make several Tag and Reference cluster arrays at init time and store these in a global. Then one, reentrant, program provides subsets of these references to other programs, in a library of core functions, based on Tag types. These then perform common functions for these tags without any additional code in the application. (yes invisibly, therefore somewhat obfuscated, but the presence of the Tag text gives something to track when debuging since each reentrant call holds the list of tags used at each location)
This allows common tasks to be carried out seamlessly, elsewhere. Like Data logging, Alarm limits checking and Scaling before and after I/O. Leaving the customer-specific main diagram virtually empty, except for the code unique to that customer.
This makes a core library that can be quickly copied from one job to the next. Growing more intelligent as it goes.
The key is to devise logical naming conventions for the tags, so they communicate their function just by the name. And syntax checking code can be added were needed to be sure all the needed tags are present, tag sets match, and find orphan tags, not handled anywhere. The Menu functions are also processed in the core. And the screen backgrounds are a collection of png files, created from a power-point file, made by the design engineer. As is the I/O list, from Excel.
It's been a very successful concept. I call it programming by reference, and use it in Altamira's BenchCAT