I was wondering about the ramifications of having tables declared public. Since EOSIO is a transparent blockchain anyone can read tables of any contract. So having them declared public in a smart contract allows other contracts for easy access of the tables. However, I saw a lot of contracts where tables are declared private and I wonder why.
What is best practice when it comes to table declarations in EOSIO smart contracts?