Generally yes. Remapping objects when GUI changes is generally easier than recoding a test.
Just like in programming you have a MVC model, Namemapping is like the testing equivalent for the 'V'
You basically have a Model, your testing data, which you store in a database or tables and use the DDT driver to get at it.
You have the views you're working with (the GUI) which you map into NameMapping to abstract you references to the view since GUI can change more rapidly than the code. This allow you to make your code more maintainable.
Then finally you have the controller which is your code.
There are certain situations when you don't want to use namemapping. There are some people who's UI changes dramatically between builds and not feisable to remap things. In that case, if developers provide you with unique ID's or other tagging characteristics, you can use a lookup table and Find() method.
many thanks for answering the question.
But I just installed test Complete and I just wanted to understand as to how it recognizes the objects. The recorded scripts it is generating are very long and confusing . For instance adding a text box creates this script
"Sys.Process("iexplore").Window("IEFrame", "Smartsheet.com - Microsoft Internet Explorer provided by GlobalLogic INC", 1).Window("TabWindowClass", "Smartsheet.com - Microsoft Internet Explorer provided by GlobalLogic INC", 1).Window("Shell DocObject View", "", 1).Window("Internet Explorer_Server", "", 1)"
Till now Onething that I got to know is that it treats every object as a window. But when I go to Object browser and click on the "How tested application only" I find nothing but just the sys object.