Are there any open-source tools which can help me better adhere to these principles when writing C#?