Name mapping is OK.
IF .... you are smart about it. If you just map objects and accept the standard mapping properties, you are likely to start hitting problems fairly quickly with anything but the most basic applications.
I use Project Variables to parameterise various properties common throughout the application (base part of URL, class names, etc etc). I also select my own properties and dependencies for object (the required child identifiers can be very useful) so I know they're more likely not to break. These can then easily be updated if things change. Also using extended find selectively, setting up your Alias part of the map in such a way that it closely resembles the screen structure (cut out all the parts of the site you don't really care about but are required for it to run) and I only map higher level parts of a site/app. The smaller, more dynamic, parts I tend to do the same as Ryan and use helper/finder functions during a run.
As long as you are careful and smart about how you use maps, and Aliases, they work fine. I very seldom have to make changes to mine and when I do they tend to be fairly minor.
You can also use them as tests if you map certain properties. For example, for a table I'll map the column headers and number of columns. Then all I need to do is check the object exists and I've verified that the columns are correct .... (and it'll flag up new ones appearing rather than just omissions).