This is entirely a matter of preference. However, I personally believe it is best to err on the side of more files. **Java requires one class per file**, with the filename the same as the class name, for example; they do this by policy to enforce this good practice (though you can have subclasses which basically get around this). Also, **source control systems** are pretty good at merging changes in a file, but it's less of a hassle if you're just working in totally separate files. You can also easier see who changed which class. Let's say another developer makes a change to the file AllEntities.h; you have no clue exactly what entity (or entities) he changed until you open the file and look at the diff output. It's great to **group small structs and enums related to class within one class's file**, though. If you have an enum that's only used by a single class, why split it into its own file? Just put them together. But if it's used by another class (i.e. another class member is of this enum's type), that's when it is time to give it its own file.