Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Java kódolási konvenciók
2
Miért van szükség kódolási konvenciókra?
~80% karbantartás több emberi erőforrás olvashatóság, érthetőség forráskód közzététele
3
Java forrásfájlok .java illetve .class kiterjesztések ~2000 programsor
tartalmaz publikus osztályt vagy interfészt Tartalmazási sorrend: Kezdő megjegyzések Csomag-, importdeklarációk Osztály-, interfészdeklarációk
4
Kezdő megjegyzések /* * Osztálynév * * Verzióval kapcsolatos információk * Dátum * Copyright megjegyzések */
5
Csomag-, importdeklarációk
első sor, mely nem megjegyzés: csomagdeklarációk utána import deklarációk példa: package csomag1.csomag2.csomag3; import javax.sound.midi.MidiChannel; import javax.sound.midi.MidiSystem; import javax.sound.midi.MidiUnavailableException; import javax.sound.midi.Synthesizer; vagy: import javax.sound.midi.*;
6
Osztály-, interfészdeklarációk (sorrend)
Osztály- vagy interfészdeklaráció része Megjegyzések 1 Osztály/interfész dokumentációs megjegyzés (/** */) 2 Osztály/interfész fej 3 Osztály/interfész implementációs megjegyzések (ha szükséges) Tartalmazhat osztály vagy interfész szintű kiegészítő információkat, amelyek nem kerültek a dokumentációs megjegyzésbe. 4 Osztályváltozók Sorrend: nyilvános, protected, félnyilvános, privát 5 Példányváltozók Sorrend: u.a. 6 Konstruktorok 7 Metódusok Sorrend: működés alapján, olvashatóság, érthetőség
7
Behúzás, sorhossz behúzás alapegysége 4 szóköz karakter = 1 tab
80 karakterű sorhossz Sortörési alapelvek: vessző után operátor előtt magas szintű törések preferálása az alacsonyszintűekkel szemben új sor elhelyezése az előző sorban lévő azonos szintű kifejezés kezdetéhez igazítva ha a fenti szabályok a kód összezavarásához vezetnének, vagy a jobb margónál sűrűsödne -> kisebb behúzások
8
Behúzás, sorhossz (példa)
peldaMetodus(hosszuKifejezes1, hosszuKifejezes2, hosszuKifejezes3); példa 2: valtozo = peldaMetodus1(hosszuKifejezes1, peldaMetodus2(hosszuKifejezes2, hosszuKifejezes3));
9
Aritmatikai kifejezéseken belüli sortörés (példa)
longName1 = longName2 * (longName3 + longname4 - longName5) + 4 * longName6; // Ajánlott példa 2: longName1 = longName2 * (longName3 + longname4 - longName5) + 4 * longName6; // Kerülendő
10
Sortörés a feltételes kifejezésnél 1.
//Ne használjuk ezt a behúzást if ((condition1 && condition2) || (condition3 && condition4) || (condition5 && condition6)){ doSomethingAboutIt(); } //Helyette így //Vagy így if ((condition1 && condition2) || (condition3 && condition4)
11
Sortörés a feltételes kifejezésnél 2.
alpha = (aLongBooleanExpression) ? beta : gamma; alpha = (aLongBooleanExpression) ? beta : gamma; alpha = (aLongBooleanExpression) ? beta
12
Megjegyzések implementációs (//, /**/) dokumentációs (/** */) Célja:
típusai: blokk, egysoros, utó-, sorvégi megjegyzés forráskód szövegének magyarázata dokumentációs (/** */) specifikáció magyarázata Célja: áttekintés nyújtás plusz információk ott ahol a kód nem egyértelmű segíti a megértést, áttekinthetőséget Hátrányok, kerülendő momentumok: redundáns adatok módosítása -> többletmunka könnyen elévülhet minőség <--> megjegyzés mennyisége
13
Implementációs megjegyzések 1.
Blokk megjegyzések Használata: fájlok, metódusok, adatstruktúrák, algoritmusok leírása Példa: /* * Ez egy blokk megjegyzés */ Megjegyzés: kóddal azonos szinten kell lennie
14
Implementációs megjegyzések 2.
Egysoros megjegyzések rövid azon a szinten amelyen az előző sor van előtte üres sor Példa: if (feltétel){ /* Ha a feltétel teljesül. */ ... }
15
Implementációs megjegyzések 3.
Utómegjegyzések még rövidebb megjegyzések kóddal egy sorban, amit magyaráznak több esetén mind azonos távolságra Példa: if (a == 2){ return TRUE; /* speciális eset */ } else { return isPrime(a); /* csak páratlan számok esetén */ } Sorvégi megjegyzések (//) blokk megjegyzés egysoros megjegyzés utómegjegyzés
16
Dokumentációs megjegyzés
Használata: osztályok, interfészek, metódusok, adattagok jellemzése Jellemzői: deklaráció előtt kell szerepelnie az itt megadottak megjelennek a dokumentációban
17
Dokumentációs megjegyzés (példa)
/** * Dokumentáció szövege * szam miért kell a "szam" bemenet szoveg miért kell a "szoveg" bemenet a visszatérési érték mit ad vissza */ public boolean valami(int szam, String szoveg){ ... }
18
Deklarációk Helye: lehetőleg az adott blokk elején
kivétel a for ciklus Ajánlott: int level; //szint int size; //tábla mérete vagy int level; //szint int size; //tábla mérete Object entry; //bejegyzés Kerülendő: int level, size; Inicializálás ahol deklaráltuk, kivéve ha egy számítás eredménye lesz az értéke
19
Osztály, interfész deklarációk
metódus név és paraméterlista között ne legyen szóköz metódus fejével egy sorba kerüljön a nyitó ("{") zárójel a záró ("}") zárójel mindig egymagában új sorban legyen (kivétel üres törzs esetén) metódusok üres sorral legyenek elválasztva egymástól Utasítások egyszerű utasítások: egy utasítás egy sor összetett utasítás: közrefogott utasítások egy szinttel beljebb nyitó zárójel a sor végén, záró zárójel új sorban, sor elején, annyival behúzva mint a kezdő utasítás
20
Üres sorok, szóközök használata
üres sorokkal a logikailag összetartozó részeket emelhetjük ki két üres sor: osztály és interfész definíciók között egy üres sor: metódusok egy adott metódus lokális változói és első utasítás között blokk vagy egysoros megjegyzés előtt vagy egy metóduson belül az egyes logikai szakaszok között, olvashatóság érdekében Szóközök használata: ha az adott kulcsszót zárójel követi (kivéve metódusnál) argumentum listában minden kétoperandusú operátort (kivétel a . operátor) pl.: a += c + d; System.out.println("Valami " + a + "valami kettő"); kifejezéseket egy for utasításban típuskényszerítéseket szóköznek kell követnie pl.: a = (double) b / c;
21
Elnevezési konvenciók
Azonosító típus Az elnevezés szabályai Példák Csomagok ASCII karakterekkel kell írni, top-level domain nevek egyikének kell lennie. (com, edu, net, org, stb.) A többi komponens egyre szűkíti a kört. com.sun.eng Osztályok Főnév, belső szavak első betűi nagyok. Egyszerű, kifejező, ne legyen rövidítés class ImageSprite Interfészek Osztályhoz hasonló interface Valami Metódusok Kisbetűvel keződő ige, belső szavak nagybetűvel kezdődnek runFast()
22
Azonosító típus Az elnevezés szabályai Példák Változók Kisbetűvel kezdődik, de nem lehet _ vagy $, a belső szavak nagybetűvel kezdődjenek. Legyen beszédes, de rövid. int i; char c; float myWidth; Konstansok Csupa ANSI nagybetű, szavak elválasztása _-al static final int MIN_WIDTH = 4;
23
Áttekintés (példa)
26
Köszönöm a figyelmet!
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.