Public and private methods are very different beasts. Use caution before making a method public.
- Public methods must validate all of their parameters.
- They must be properly documented, including any exceptions that they might throw.
- All edge cases must be analyzed and delt with (in code or in documentation).
- Any requirements involving the order in which public methods are called must be documented or, preferably, removed.
- Object state requirements must also be documented and validated.
- Public methods must not change their signature or behavior in any way that may break an application when moving from one version to the next.
- Public methods may need to be designed with marshalling requirements. (Such as .Net's CLS restrictions.)
Private methods have none of these limitations.