Determining the appropriate size for your library
One important consideration when designing your library is how large you want your library to be. In general, you should have an idea of how large the library could be upfront, even if you expect that in the initial release, the library will be fairly small.
In the previous example, we had a library that converted an Enumerable
object to CSV. That's a library with a nice, small scope. However, maybe the conversion of Enumerable
to CSV was just our initial need, and we also want to use the same library to support converting Enumerable
objects to HTML tables, Word tables, Excel spreadsheets, Portable Document Formats (PDFs), and even more formats through external adapters. Additionally, you want the same library to handle not just Enumerable
input but also arbitrary object input, through configurable input convertors registered using plugins.
Those two libraries are probably going to require at least one order of magnitude...