How large (lines of code) should a class be before one should split it into smaller classes? Is there a general rule on this? How many functions should a class contain? Are there limits (theoretical or practical) that people learning classes should adhere to?