Well, one obvious consideration would be the (very common) IFoo
and Foo
pair (when abstracting Foo
), but more generally it is often fundamental to know whether something is an interface vs class. Yes it is partly redundant, but IMO is is different from things like sCustomerName
- here, the name itself (customerName
) should be enough to understand the variable.
But with CustomerRepository
- it that a class, or the abstract interface?
Also: expectation; the fact is, right or wrong, that is what people expect. That is almost reason enough.