So the subject of Stream classes came up. It got me thinking, what's the desired naming convention? Rules of English might dictate a certain word order, though programming is not English. Nor do all programmers speak English. And even if they did, choosing programming conventions because they match or are close to English seems like a weak argument at best. This got me thinking, more logical ordering of words that match some sort of hierarchy might be preferred. For instance:
Stream
SeekableStream (English order)
Stream
StreamSeekable (logical/hierarchical order)
This can continue on to other derived types:
FileReaderStream (English)
StreamFileReader
StreamReaderFile
One of my considerations, is what is most useful for Intellisense popups. Having a common Stream prefix means all available options are grouped together, making it easy to see at a glance what is available.
Another thought is to include the "Stream" part in the interfaces, but omit it from the derived classes. Perhaps the Reader/Writer part is enough to imply something is a stream.
Stream
StreamSeekable
FileReader (or ReaderFile)
FileWriter (or WriterFile)
Perhaps the biggest concern, what makes the most sense to other people?