DEV Community

Discussion on: #002 - Clean Code - Names

Collapse
vlasales profile image
Vlastimil Pospichal

Hungarian notation is still alive:
class Logger implements ILogger
I hate the prefix "I".

Collapse
jojonarte profile image
Jojo Narte

i feel you

Collapse
thinkverse profile image
Kim Hallberg

Have you tried the contract naming? Instead of I it would be LoggerContract.

Collapse
vlasales profile image
Vlastimil Pospichal

No, in my opinion it's bad just the same. I use adjectives derived from the names of the required methods. The interface tells the class what capabilities it must have. Contract tells word contract only, no ability.

Thread Thread
alainvanhout profile image
Alain Van Hout

Indeed. It's an odd dissimilarity between C# and Java, that in Java it's the interfaces that are typically/often seen as primary: you have a Car interface and a CarImpl class (or rather, a specific type of car). After that, the user of the Car instance should only care about the instance being a Car, not which specific kind of car, apart from what can be gleaned via the interface's methods.

Thread Thread
vlasales profile image
Vlastimil Pospichal

Interface first, implementation last.

Collapse
hyftar profile image
Simon Landry

How would you name your interfaces for dependency injection?

Collapse
vlasales profile image
Vlastimil Pospichal • Edited on

It depends on what abilities will be required from the injected object. ILogger is not an ability.