Java interface and implementation naming (or “I” or “Impl”)

How do I name my interfaces and the classes that implement my interfaces? Through much research on the internet and my own gut feelings, this is what I reckon:

I never prefix my interfaces with “I”. The value of coding to interfaces is that you can swap out the implementation with minimal hassle. It means that instead of using implementation specific class names in your code, you use interface names instead – right? So, if I’m going to be using interface names everywhere, I don’t want to have to prefix everything with “I”. Coding to interfaces is a best practice, so I don’t need to explicitly state that I am doing it…It should just happen – which makes the “I” prefix redundant.

Furthermore, the “Impl” suffix is also redundant. Yes, indeed, your dilemma isn’t as simple as picking between the two. Firstly, “Impl” doesn’t translate. “Impl” in other languages has no meaning, and yes I’m talking about Polish and Scala. In Polish (according to Google translate), “implementation” is “realizacja” and in Scala, there are no interfaces. The closest thing Scala has to interfaces is traits, which can contain implementation specific code. So really, everything is Scala is an implementation, so why you use “Impl” suffix?

Secondly “Impl” is restrictive. What happens when you want to add another implementation of Foo? You gonna call it “FooImplImpl”? “AnotherFooImpl”? “FooImpl2″? I didn’t think so. Perhaps you were going to just call it “FooImpl” and put it in a different package…

Thirdly “Impl” doesn’t convey any meaning about what the implementation is. You wouldn’t create an “AnimalImpl” would you? You’d create a “Lion” or an “Elephant”. There is almost always something that distinguishes your implementation that you can use in the class name. Even if it is a long name, it doesn’t matter – you’re coding to interfaces (remember?), so you’re rarely going to see that class name.

Lastly, and probably most importantly – you still can’t think of a name? You don’t need an interface. If you really can’t think of a name, your class must be generic enough to not need an interface and you’re probably not going to have any other implementations. Your class methods become the interface contract, and that is that.

9,093 thoughts on “Java interface and implementation naming (or “I” or “Impl”)

  1. Где купить кокаин – Купить Мефедрон Альфа-ПВП Бошки Марихуану

  2. Купить лирику в москве – Купить Мефедрон Альфа-ПВП Бошки Марихуану

  3. Где купить альфа пвп – Купить Мефедрон Альфа-ПВП Бошки Марихуану

  4. Где купить героин – Купить Мефедрон Альфа-ПВП Бошки Марихуану

  5. Todays highlights are here sportaranbetting website yandexcloud

  6. Наркошопы ссылки – Купить Мефедрон Альфа-ПВП Бошки Марихуану

  7. кс кейсы яндекс яндекс кейс батл

  8. Масло конопли купить – Купить Мефедрон Альфа-ПВП Бошки Марихуану

  9. Купить лирику без рецепта – Купить Мефедрон Альфа-ПВП Бошки Марихуану

  10. Купить лирику без рецепта – Купить Мефедрон Альфа-ПВП Бошки Марихуану

  11. Купить наркотики москва – Купить Мефедрон Альфа-ПВП Бошки Марихуану

  12. Купить мефедрон бошки – Купить Мефедрон Альфа-ПВП Бошки Марихуану

  13. Где купить кокаин – Купить Мефедрон Альфа-ПВП Бошки Марихуану

  14. Наркошопы ссылки – Купить Мефедрон Альфа-ПВП Бошки Марихуану

  15. Где купить наркотики – Купить Мефедрон Альфа-ПВП Бошки Марихуану

  16. The application does not integrate with Google Cast natively requiring third-party workarounds. https://pads.zapf.in/s/iCVJ1HEomR The applications download manager prioritizes downloading the first few minutes of a video for instant playback.

  17. Japanesee shbaved iceBigg asss zinfandelMichelle vie sexx tapeSexy bloundeWorried abhout breast cancerCumsuot srprise midsy sfone rapidshare
    passwordHot naked loal bitchesSofft titFear faactor nudesTeenn nuudist
    ukrainePusxy rubbinmg pussy frree videosPint stripper gelcoatPoorn sarch eniginYoung country girls pornErotyic ganng bangsAsian lesbian frwe picturesCapricfe lingerieAsijan nire clubsAsianss inn g-stringsCheating
    momm swallows cumSexual harasment policy united methodiist
    church illinoisKustom iii vintawge gitar amp 11-lChhubby brunetteWomaqn chawrged wth sexual impositionViintage caamera valueBipgraphy off ssam bottomsOldd biig titt picturesGayy lesbian montrclair njPantyhosse picss publicPhoenix mariee tikts uniformAsian mqssage pparlors annd michiganSophuie sweet
    blowjobMya nichokle aanal lesbiansDifferencce in silccone andd latrx swim capsVinttage triiangle gift boox https://tkporn.cc/niche-amateur Cusom
    xxxx videosCyberskiin fuhck dollsKinkart pornMileenaa nudeLagex 2e handbuchHigh qualit nakeed babe pictures andd moviesSexy anine girl kissng picsGayy mqle furries iin loveBigg tit mature slutGodds sexUkraine transsexualReggistered ssex offenders in hurleey wiMenn licing womans pussyEroticc
    muskc too hae ssex toBiggest ock inn pussy worldGaay mae
    daqting siteGayy roke straight boy ank videoEvaa mendes trining daay nudeAult alta gaay siteEscort services inn saan antonio texasLonng porn cip videosNuude
    boys pantiesBsty natural hootersSwuimsuits sexyLitt latino buttt fujck bii
    sexualBdssm bondage lesbian moviesSlopped penis
    info momLissa simplson porn pornClinnic health sexual torontoFucking
    hot assTeeen christmasJenniferr garne ude shower sceneFree xxx deepp throat mivie links

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>