So up until now every time I make an apex class, I make a separate class that tests that class (usually the same name with the suffix "TestClass"), which is what I've seen a lot of people do. However I am now aware that the same thing can be accomplished by annotating test functions inside the main class, instead of having a whole other class (which takes up space in the apex class list).
My question is whether there is a recommended way of doing this or is it literally just user preference? Personally I would prefer inline test methods as it just seems cleaner but are there any repercussions or implications that I should be aware of before changing all my code?
For the sake of completeness I'll add my comment as an answer.
From Summer 13/API 28 and above test methods have to be in their own test class, using the @isTest annotation. As Dominic says this also has the benefit of not being included in the orgs apex character limit.