Moc děkuji tvůrcům jazyka Java, že vytvořili velmi přehledný jazyk, jehož součástí je i jmenná konvence, která podporuje dlouhé názvy a "potlačuje" zkratkovitost v zápisu kódu.
Jsem přesvědčen, že Sun udělal chybu a public u metod interfacu měl být povinný. Jak je někde volba, tak zákonitě vznikají 2 nesmiřitelné tábory. Jeden tvrdí, že redundantní informace má být potlačena. Druzí jsou přesvědčeni o poctivosti plného zápisu a explicitním potvrzení, že i metoda interfacu je veřejná.
Jistě jste pochopili, že já patřím k té druhé skupině. Mám rád čitelný kód. Nejsem líný napsat více znaků pokud jsem přesvědčen, že to přispěje k přehlednosti zdrojáku. Do této kategorie spadá i deklarace public metod interfacu. Na variantě první mi vadí, že deklarace viditelnosti metody je kontextově závislá - default je u třídy jiný než u rozhraní a to mi nevyhovuje. Podpůrný argument, proč public uvádět i u interfaců je migrace interface na abstraktní třídu a už musíte modifikátory doplňovat.
Mnohem víc je ale pro mě důležité, aby celý tým dodržoval stejné konvence. Kód by měl vypadat podobně a všichni by s konvencemi měli souhlasit. A v tomto případě asi budu muset ustoupit ze své pravdy, protože se zdá, že většina javovské populace preferuje klíčové slovo public nepsat. A co se teda zlobím na kluky ze Sunu, že přímo v The Java™ Language Specification (JSL) doporučují redundantní public nepoužívat: It is permitted, but strongly discouraged as a matter of style, to redundantly specify the public modifier for interface methods.
Je to teda ústupek na úkor čitelnosti kódu, což je jen škoda pro začínající a poctivé programátory. :P (Omlouvám se za malou demagogii.)
Najde se vůbec někdo, kdo stejně jako já preferuje tu ukecanější variantu?
Odkazy:
- JSL - http://docs.oracle.com/javase/specs/jls/se5.0/html/interfaces.html#9.4
- Stack Overflow - http://stackoverflow.com/questions/161633/methods-in-a-java-interface-with-or-without-public-access-modifier