If you are designing from scratch, they are pretty much whatever you want them to be, based on the chip variant.
One general hint though...
With all the parts, even other family parts like the '12', you'll find that a lot of times there's port enhancements. For example, PortA is commonly used as a 'data bus' if the chip supports an expanded mode. In one of my designs, I used PortA as a bi-directional databus...
So, if you do your own design from scratch, it's always a good idea to try to follow the subset of any of the ports for what they can do. It's not required, and sometimes you may find not practical, but by doing that, you find that you can keep your code base as a 'library' that can easily be modified in the future.
Other things and issues that may apply... I did a '12' design that uses I2C. It turned out I didn't want to order the variant of the part that had built in I2C so I did my own in software on the same pins. That way in the future if I now have routines that will drop in on a part with I2C or without it and I have flexibility in parts to use and configurations. Same with com ports, and control lines.
Mike