It's not really something that the CAD system can do much about. The problem almost (but not quite) always stems from a desire to make a design hierarchical, even when there's no practical benefit from doing so.
Hierarchy is fine if, say, a design has multiple ports or channels. Then, of course it makes sense to draw the repeated components as a single block, and the net names within the block automatically get a suffix indicating which instance of the block they belong to. In this case the names are consistent, predictable, and descriptive. No problem.
I can also see the benefit if a design is hugely complicated, and/or includes really substantial portions which are taken from other schematics. In that case, keeping them as a tried and tested, separate entity makes sense.
However... I do see quite a few schematics where the designer has tried to follow some unwritten "good practice" manual, and has partitioned the schematic into functional blocks, where each of them is only a page or two, and the blocks are joined together by a top level design. The theory is that you get an accurate block diagram "for free".
Unfortunately, what it really means is the same net can get three different names: one at the source, one at the top level where the blocks are joined, and one at the destination. (Think "CLK_20M_LVCMOS" becomes "CLK_20_LVCMOS" becomes "CPU_CLK").
It's valid, but lazy. If you want a block diagram, draw one. A 10 page schematic doesn't need, or benefit from, being chopped into chunks.