Interface Uses

One-to-one misuse

Often in .net one-to-one interfaces are introduced for every class. Arguments are typically:

For tests/mocking just use the original class unless it has dependencies like SQL, HTTP etc. If so create an interface to be able to mock it. For decoupling - if interface and class are the same and there is no abstraction the coupling is just moved to the interface instead. For dependency injection just inject the concrete class

Guidelines (just my own dynamic list)

See also