March 31, 2012

Methods in a Java interface with or without public access modifier

Zlobím se na tvůrce jazyka Java, že v případě interface je modifikátor public u metod nepovinný. :o 

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: