Eclipse-plattformen
Namnregler

Senast uppdaterad 26 maj 2006

Namnkonventioner och -riktlinjer för Eclipse-plattformen:

Java-paket

Eclipse-plattformen består av en samling Java-paket. Paketnamnutrymmet hanteras i enlighet med Sun's package naming guidelines (Suns riktlinjer för paketnamn). Underordnade paket bör inte skapas utan godkännande från den som äger det underordnade paketträdet. Paketen för Eclipse-plattformen är alla underordnade paket, org.eclipse. Den första paketnamnkomponenten efter org.eclipse kallas det överordnade paketnamnet. Följande överordnade paket för org.eclipse finns i Eclipse 2.0-versionen:
org.eclipse.ant[.*] - Ant-funktioner
org.eclipse.compare[.*] - Jämförelsefunktioner
org.eclipse.core[.*] - Plattformskärna
org.eclipse.debug[.*] - Felsökning
org.eclipse.help[.*] - Hjälpfunktioner
org.eclipse.jdi[.*] - Eclipse-implementering av Java-felsökningsgränssnittet (JDI)
org.eclipse.jdt[.*] - Java-utvecklingsverktyg
org.eclipse.jface[.*] - JFace
org.eclipse.ltk[.*] - Generisk infrastruktur för språkverktyg
org.eclipse.osgi[.*] - Eclipse-API för interaktion med OSGi
org.eclipse.pde[.*] - Utvecklingsmiljö för insticksprogram
org.eclipse.search[.*] - Sökfunktioner
org.eclipse.swt[.*] - Standard Widget Toolkit
org.eclipse.team[.*] - Gruppfunktioner och versions- och konfigurationshantering
org.eclipse.text[.*] - Ramverk för textredigerare
org.eclipse.tomcat[.*] - Apache Tomcat-funktioner
org.eclipse.ui[.*] - Arbetsmiljö
org.eclipse.update[.*] - Uppdatera/installera
org.eclipse.webdav[.*] - WebDAV-funktioner
Följande paketnamnsegment är reserverade:
internal - anger ett internt implementeringspaket som inte innehåller något API
tests - anger ett paket utan API som endast innehåller testuppsättningar
examples - anger ett paket utan API som endast innehåller exempel
De här namnen används som namnled och får endast förekomma efter det överordnade paketnamnet. Exempel:
org.eclipse.core.internal.resources - Rätt användning
org.eclipse.internal.core.resources - Fel. internal - föregår det överordnade paketnamnet.
org.eclipse.core.resources.internal - Fel. internal - följer inte direkt på ett överordnat paketnamn.

Lite mer information om strukturen för Eclipse-plattformen: Eclipse-plattformen är uppdelad i kärna och användargränssnitt. Allt som klassificeras som kärna är oberoende av fönstersystemet. Tillämpningar och insticksprogram som är beroende av kärnan och inte användargränsnittet kan köras konsollöst. Skillnaden mellan kärnan och användargränssnittet kan inte definieras i termer av API eller icke-API - både kärnan och användargränssnittet innehåller API. Användargränssnittsdelen av Eclipse-plattformen kallas arbetsmiljön. Arbetsmiljön är ett användargränssnittsramverk på hög nivå där du kan skapa produkter med avancerade användargränssnitt med hjälp av komponenter som kan anslutas under drift. Arbetsmiljön är skapad med JFace, SWT och plattformskärnan som grund. SWT (Standard Widget Toolkit) är en operativsystemsoberoende metod på låg nivå för kommunikation med fönstersystemet. JFace är ett användargränssnittsramverk på mellannivå som är praktiskt för att skapa komplexa användargränssnittskomponenter, till exempel visningsprogram för egenskaper. SWT och JFace är användargränssnitt per definition. Java-verktyget är en Java-IDE som är skapad på arbetsmiljön. Slut på informationstillägget.

API-paket  API-paket är paket som innehåller klasser och gränssnitt som måste göras tillgängliga för ISV:er. Namnen på API-paket måste ha en innebörd för ISV:n. Det antal paket som ISV:n måste komma ihåg bör vara litet eftersom allt för många API-paket kan göra det svårt för ISV:er att avgöra vilka paket som ska importeras. I ett API-paket anses alla publika klasser och gränssnitt vara API. Namnen på API-paket bör inte innehålla internal, tests eller examples för att undvika sammanblandning med schemat för namngivning av paket utan API.

Interna implementeringspaket  Alla paket som är en del av plattformsimplementeringen men inte innehåller något API som ska vara tillgängligt för ISV:er anses vara interna implementeringspaket. Alla implementeringspaket bör flaggas som internal med märkordet precis efter det överordnade paketnamnet. ISV:er informeras att alla paket som är markerade med internal inte är tillgängliga. (Med en enkel textsökning efter ".internal." upptäcks misstänkta referenser i källfiler. Dessutom är "/internal/" misstänkt i .class-filer).

Testuppsättningspaket  Alla paket som innehåller testuppsättningar bör flaggas som tests med märkordet precis efter det överordnade paketnamnet. Helt automatiserade tester är normen, så till exempel org.eclipse.core.tests.resources skulle innehålla automatiserade tester för API i org.eclipse.core.resources. Interaktiva tester (tester som genomförs i praktiken) bör flaggas med interactive som det sista paketnamnssegmentet, så till exempel org.eclipse.core.tests.resources.interactive skulle innehålla motsvarande interaktiva tester.

Exempelpaket  Alla paket som innehåller exempel som levereras till ISV:er bör flaggas som examples med märkordet precis efter det överordnade paketnamnet. Till exempel org.eclipse.swt.examples skulle innehålla exempel på hur SWT-API:t används.

Fler regler:

Klasser och gränssnitt

I Sun's naming guidelines (Suns riktlinjer för namn) finns följande anvisningar:

Klassnamn bör vara substantiv med en blandning av gemener och versaler och den första bokstaven i varje internt ord versal. Välj enkla och beskrivande klassnamn. Använd hela ord - undvik akronymer och förkortningar (om inte förkortningen är den term som vanligen används, till exempel HTML).
 
Exempel:
    class Raster;
    class ImageSprite;
 
Gränssnittsnamn bör anges med versaler, som klassnamn.

För gränssnittsnamn följer vi "I"-konventionen, där "I" står för interface (gränssnitt): alla gränssnittsnamn har prefixet "I". Till exempel "IWorkspace" eller "IIndex". Med den här konventionen förbättras läsbarheten för kod genom att gränssnittsnamn lättare känns igen. (Den här konventionen används för Microsoft COM-gränssnitt).

Fler regler:

Metoder

I Sun's naming guidelines (Suns riktlinjer för namn) finns följande anvisningar:

Metoder bör vara verb med en blandning av gemener och versaler, den första bokstaven gemen och den första bokstaven i varje internt ord gemen.
 
Exempel:
    run();
    runFast();
    getBackground();
Fler regler:

Variabler

I Sun's naming guidelines (Suns riktlinjer för namn) finns följande anvisningar:

Förutom för variabler används en blandning av gemener och versaler med den första bokstaven gemen för alla förekomster, klasser och klasskonstanter. Interna ord har inledande versal. Variabelnamn bör inte börja med understreck _ eller dollartecken $ , även om det går att använda båda.
 
Variabelnamn bör vara korta och beskrivande. Variabelnamn bör vara självbeskrivande, dvs. snabbt ge en bild av hur variabeln används. Variabelnamn med ett tecken bör undvikas förutom för tillfälliga engångsvariabler. Vanliga namn för tillfälliga variabler är i, j, k, m och n för heltal och c, d och e för bokstäver.
 
Exempel:
    int i;
    char c;
    float myWidth;

(Obs! Vi följer inte längre konventionen med att icke-konstanta fältnamn får prefixet "f", till exempel "fWidget".)

Konstanter

I Sun's naming guidelines (Suns riktlinjer för namn) finns följande anvisningar:

Namn på deklarerade klasskonstanter för variabler och ANSI-konstanter bör alla anges med versaler med orden avgränsade med understreck ("_").
 
Exempel:
    static final int MIN_WIDTH = 4;
    static final int MAX_WIDTH = 999;
    static final int GET_THE_CPU = 1;

Insticksprogram och utökningspunkter

Alla insticksprogram, inklusive de som är en del av Eclipse-plattformen, till exempel insticksprogrammen för resurser och arbetsmiljö, måste ha unika ID:n med samma namnmönster som Java-paket. Till exempel har insticksprogram för arbetsmiljö namnet org.eclipse.ui[.*].

Namnutrymmet för insticksprogram hanteras hierarkiskt. Skapa inte ett insticksprogram utan godkännande från ägaren till det omslutande namnutrymmet.

Utökningspunkter där det förväntas finnas flera utökningar bör ha namn med pluraländelse. Till exempel "builders" i stället för "builder".