Hi Jan,
Just giving my two cents...
In general, I think what matters is that each organization come up with a policy of either (1) using global data items for those data items that need to be used across multiple pages or (2) using I/O on each page to pass in and out.
As far as my preference, the way I see it, there are benefits to both...
Global Data Items
Benefits
Requires less development time because complex I/O within the same component is not necessary
Requires less refactoring in the case that the I/O across pages needs to change
Drawbacks
The list of data items available when working with expressions could have a lot of items in it, making it difficult to find needed data items and possible confusing one data item for another (I think this does not matter if your naming conventions are solid)
It can be difficult to step through in DEBUG mode because you cannot easily glance at all the values of various data items without jumping to the main page
It can be impossible to DEBUG if all the global data items are not on the same page
Local using Input/Output
Benefits (basically the opposite)
The list of data items when working with expressions is limited in scope so easier to locate your needed item
It is much easier to DEBUG because all your data items are on the same page with you
Drawbacks
Extra development effort to configure I/O for each page
Extra refactoring when that I/O needs to change
...but I prefer Local Data Items with I/O on each page. The decreased development effort is nice for global data items, but I have found that it is FAR too easy to reference the wrong data item at the wrong time and then as I mentioned above, it is way easier to DEBUG a process that uses Local Data Items. I personally still name them exactly the same across pages though.
I guess I just like the concept of doing everything on purpose and only dealing with what is in scope at the time. For example, I know what data items I have, so I pretend as if they are global and I type out something like [Parent Data.Item Key] and if I get an error, I know I need to 'import' that collection onto the current page through an input parameter. I suspect that the Functional Programming folks out there would approve of this approach as well. =)
Respectfully,
Dave
Dave Morris, 3Ci at Southern Company