Background: in the past 10 years of coding C/C++ I've learned that it's important to think about the (external) interface of the code I write. It's generally a good idea to keep it small and simple, hiding implementation details as much as I can. As a result, typically a software package/library that I would develop would have an include directory that only contains the header files that I want to expose to the users of that package/library, while the rest of the headers that are only intended for internal use are located in the src directory.
Now I'm getting started with ROS and I see quite a few packages that seem to put .h files in include and .cpp files in src. Is there are specific reason to do this?