The AA-recommended way: every page has its own defined pageName. So even if the URL or title changes, the pageName must still stay the same. Biggest disadvantage: your developers will hate you because they need to maintain that mapping all of the time. And if there are new pages, they need to ask you for the pageNames, so you might also end up hating yourself.
The GA way: use the URL's path as the pageName. This can be obtained easily in Launch, using the "URL" data element type. Biggest disadvantage: URLs change, so the expected consistency is gone. Also, this method won't work well with Single Page App sites.
BTW AA has an AppMeasurement plugin that can convert URL paths into a pageName, by replacing the "/" with ":" and dropping ".html".
Use page titles only. Biggest disadvantage: titles change, so the expected consistency is gone. Another disadvantage is in troubleshooting: If you need to check a page's tracking, you'll need to figure out its URL by yourself so that you can open that page.
Your own way. The advantages and disadvantages are whatever you make them to be. 😉