While I have some development experience, I have yet to design APIs or larger scale projects.
My general process usually involves something along:
This is my own "style"; I am wondering where can i read more about formal processes and methodologies for doing such things? (online, books, etc)
The Framework Design Guidelines is a great book for this. Also, the .NET Framework Standard Library Annotated Reference is another great book.
Here's some of the principals I've followed:
Printer
and PrintQueue
, where Printer
would be the most easily recognised but PrintQueue
would better describe the concept. Which leads to...File
base class in .NET and the derived NtfsFile
. Most devs would automatically try to instantiate a File
, only to discover it's abstract
. Inheritance like this works well in implementation, but...Stream
, StreamReader
, TextReader
, StringReader
, and FileStream
. There is a clear hierarchy but this is confusing when thinking of a scenario, e.g. reading a file.MyCompany.MyTechnology.dll
has a namespace MyCompany.MyTechnology
and other namespaces, such as MyCompany.MyTechnology.MyFeature
. This isn't necessarily applicable to Frameworks/APIs; the assembly here should represent logical grouping for devs and allow for performance (load time), easy deployment, and easy versioning. This is a balancing act; nobody likes referencing more than 1 assembly when just 1 will do. And nobody likes taking dependencies on stuff they don't need if an assembly is too big and has poor logical grouping (e.g. having to take an additional dependency on ADFS even if the features you're using in the API have nothing to do with ADFS).If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With