In addition to what smarx pointed out, I also like to keep them separate. The major advantages I see is:
- The token contract is very simple and less prone to attack in comparison to the crowdsale with enormous conditions. Since crowdsale are for short period, why keep complex logic forever.
- Gas consumed by a function depends (indirectly )on how much code is written in the contract. So the crowdsale functions become inactive after the sale ends. But each time you transfer token, you atre funding
transfer function in abi will lot of unused functions
- Simplicity and code management is other most imp reason.
There are n number of reasons to keep these separate but also m reasons to keep them in same contract.
- Your users don't need to confuse which address to pay and which address to add to their
- Some users accidentally pay to token contract instead of ICO contract. You need to handle that manually.
So there is always a trade-off. which one to choose is you business call.