Java kódolási konvenciók

Slides:



Advertisements
Hasonló előadás
A felhasználói interfész A felhasználói interfész az a felület, amellyel a szoftver az ember felé „fordul”; amellyel a felhasználó nap mint nap találkozik.
Advertisements

Fókuszban az önkormányzati tagsággal rendelkező szociális szövetkezetek _ A pályázatkezelői felület bemutatása.
TÖMÖRÍTÉS. Fogalma A tömörítés egy olyan eljárás, amelynek segítségével egy fájlból egy kisebb fájl állítható elő. A tömörítési arány függ a fájl típusától,
Bevezetés a C# nyelvbe Az alapok összefoglalása Farkas Csaba.
1 Az önértékelés mint projekt 6. előadás 1 2 Az előadás tartalmi elemei  A projekt fogalma  A projektek elemei  A projekt szervezete  Projektfázisok.
Neumann elvek 1946-ban teszi közzé a korszerű számítógép felépítésének alapelveit: 1.Soros működés (az utasítások végrehajtása időben egymás után történik.)
Forrás: Reiter István C_Sharp programozás lépésről lépésre (frissített tartalommal )
GUARDING YOUR BUSINESS ■ Linux disztribúciók és FreeBSD az upstream szemszögéből Czanik Péter Community manager syslog-ng upstream.
EU pályázati programok A szervezet / változások 1.A pályázók adminisztrációs terheinek csökkentése a projektfejlesztési, pályázati szakaszban.
Internet tudományos használata
ERASMUS+ DISSZEMINÁCIÓS PLATFORM
NIIF Behívás projekt aktualitások
Nagyméretű állományok küldése
A rehabilitációt segítő támogatások, jogszabályi változások
Adatbázis normalizálás
Gyűjtőköri szabályzat
Kompetenciamérés a Szakiskolai Fejlesztési Program II. keretében 2007
Pályaválasztási tanácsadás
Programstruktúrák.
Script nyelvek előadás
Magyar Bibliográfiai Adatbázisok
AWK ismétlés AWK: adatvezérelt nyelv:
A C++ programozási nyelv
CSOPORT - A minőségellenőrök egy megfelelő csoportja
Lexikális elemző: lex (flex)
Tájékoztató a évi OSAP teljesüléséről
Visual Studio Code Metrics
Animációk.
Programozás I. 5. gyakorlat.
Logikai programozás 2..
Nyelvek típusossága.
Adatbázis-kezelés (PL/SQL)
Az   karakter Alapesetben ha két szó között üres hely (space) van, akkor a böngésző a jobb helykihasználás érdekében a két szót külön sorba tördelheti.
2. Bevezetés A programozásba
Adatbevitel, értékadás, típuskonverzió
Script nyelvek előadás
Grosz imre f. doc. Kombinációs hálózatok /43 kép
Rendszerfejlesztés gyakorlat
Számítógépes Hálózatok
Teljes visszalépéses elemzés
Számítógépes Hálózatok
Tájékoztató az Önkormányzati ASP Projektről
Szövegkezelés, hibakezelés
Informatikai gyakorlatok 11. évfolyam
Aritmetikai kifejezések lengyelformára hozása
Programozás I. 4. gyakorlat.
Informatikai gyakorlatok 11. évfolyam
B M Java Programozás 4. Gy: Java GUI IT A N Tipper, MVC kalkulátor
Új pályainformációs eszközök - filmek
43.óra Amikre fontos odafigyelni!
A Microsoft SharePoint testreszabása Online webhely
Ez a formátum csak egy ajánlás, nem kötelező a használata.
Önkormányzati adattárház
Összeállította: J. Balázs Katalin
B M Java Programozás 9. Gy: Java alapok IT A N Adatkezelő 5.rész
Az ELQ 30A+ automatikus hangfrekvenciás mérései
A kutatási projekt címe Név Oktató neve Tanulmányi intézmény neve
SZAKKÉPZÉSI ÖNÉRTÉKELÉSI MODELL I. HELYZETFELMÉRŐ SZINT FOLYAMATA 8
További rendező és kereső algoritmusok
I. HELYZETFELMÉRÉSI SZINT FOLYAMATA 3. FEJLESZTÉSI FÁZIS 10. előadás
B M Java Programozás 2. Gy: Java alapok IT A N Adatszerkezetek
Együtt Nyírbátorért Helyi Közösség
Áramlástan mérés beszámoló előadás
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
[Év beszúrása]. évi iskolaév Intézmény Tanár Osztály
[Év beszúrása]. évi iskolaév Intézmény Tanár Osztály
Vidékfejlesztési pályázatok megvalósításához útravaló
A POWERPOINT 2007 újdonságai
Algoritmusok.
Dr. Papócsi László Gábor
Előadás másolata:

Java kódolási konvenciók

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

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

Kezdő megjegyzések /* * Osztálynév * * Verzióval kapcsolatos információk * Dátum * Copyright megjegyzések */

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.*;

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

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

Behúzás, sorhossz (példa) peldaMetodus(hosszuKifejezes1, hosszuKifejezes2, hosszuKifejezes3); példa 2: valtozo = peldaMetodus1(hosszuKifejezes1, peldaMetodus2(hosszuKifejezes2, hosszuKifejezes3));

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ő

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)

Sortörés a feltételes kifejezésnél 2. alpha = (aLongBooleanExpression) ? beta : gamma; alpha = (aLongBooleanExpression) ? beta : gamma; alpha = (aLongBooleanExpression) ? beta

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

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

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. */ ... }

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

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

Dokumentációs megjegyzés (példa) /** * Dokumentáció szövege * * @param szam miért kell a "szam" bemenet * @param szoveg miért kell a "szoveg" bemenet * @return a visszatérési érték mit ad vissza */ public boolean valami(int szam, String szoveg){ ... }

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

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

Ü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;

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()

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;

Áttekintés (példa)

Köszönöm a figyelmet!