Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

Podobné dokumenty
Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Algoritmizace a programování

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

Úvod do programování - Java. Cvičení č.4

Algoritmizace a programování

Programovací jazyk Pascal

8 Třídy, objekty, metody, předávání argumentů metod

20. Projekt Domácí mediotéka

1. Programování proti rozhraní

1. Téma 12 - Textové soubory a výjimky

Vytváření a použití knihoven tříd

Řídicí struktury. alg3 1

Výčtový typ strana 67

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

10 Balíčky, grafické znázornění tříd, základy zapozdření

Zápis programu v jazyce C#

KTE / ZPE Informační technologie

Regulární výrazy. Vzory

První kapitola úvod do problematiky

Teoretické minimum z PJV

17. Projekt Trojúhelníky

Programování v C++ 3, 3. cvičení

Objektově orientované programování

Seminář Java II p.1/43

Testování, ladění a dokumentace programů

Úvod do programovacích jazyků (Java)

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Objekty strana 11. Abstrakce je základní objektovou vlastností. Skutečnost, kterou chceme do programu promítnout,

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Vaše jistota na trhu IT. Balíčky. Rudolf Pecinovský

Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Algoritmizace a programování. Terminálový vstup a výstup

6. Příkazy a řídící struktury v Javě

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

Programovací jazyk Java

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

Z. Kotala, P. Toman: Java ( Obsah )

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

6 Příkazy řízení toku

Programování v Javě I. Leden 2008

15. Projekt Kalkulačka

Programování v Javě I. Únor 2009

Algoritmizace prostorových úloh

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Programování v C++ 2, 4. cvičení

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo

Algoritmizace prostorových úloh

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

9. přednáška - třídy, objekty

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ

Algoritmizace a programování

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Projekty pro výuku programování v jazyce Java

PREPROCESOR POKRAČOVÁNÍ

1. Téma 03 - Rozhodování

Paměť počítače. alg2 1

Soubor jako posloupnost bytů

Základy programování Zdrojový kód, dokumentace, týmová práce

Prezentace a vysvětlení programového prostředí NXC

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

Sada 1 - Základy programování

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Proměnné a datové typy

Úvod do programovacích jazyků (Java)

Projekt Obrázek strana 135

Abstraktní datové typy: zásobník

Windows je registrovaná obchodní známka firmy Microsoft v USA a v ostatních zemích.

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Pole a kolekce. v C#, Javě a C++

Úvod do programovacích jazyků (Java)

Operační systémy. Cvičení 4: Programování v C pod Unixem

O autorovi O odborném korektorovi Úvod 17 Vývoj jazyka Java Java SE 8 Struktura této knihy Předchozí zkušenosti s programováním nejsou potřebné

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

7.3 Diagramy tříd - základy

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

7. Datové typy v Javě

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

Základy objektové orientace I. Únor 2010

4IT101 otázky k závěrečnému testu verze pro zimní semestr 2007/2008

Typický prvek kolekce pro české řazení

7.3 Diagramy tříd - základy

3. Třídy. Základní pojmy objektového programování. Třídy

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Algoritmizace a programování

Obsah. O auto ro vi 13 V ěnování 14 Poděkování 15 Z p ětn á vazba od čtenářů 16. P rogram ování pro M in ecraft v Jávě 17

Transkript:

Programové konvence, dokumentace a ladění 2. přednáška Alena Buchalcevová

Proč dodržovat programové konvence? velkou část životního cyklu softwaru tvoří údržba údržbu provádí většinou někdo jiný než autor konvence zlepšují čitelnost a rychlost pochopení kódu zdrojový kód by měl odpovídat standardům, které používá komunita vývojářů 2

Konvence pro soubory soubory se zdrojovým kódem mají příponu.java soubory se bytekódem mají příponu.class zdrojové soubory by neměly mít více než 2000 řádků každý soubor může obsahovat pouze jednu veřejně přístupnou třídu nebo rozhraní v souboru může být několik privátních tříd a rozhraní, které by ale měly logicky souviset s veřejnou třídou souboru 3

Struktura zdrojového souboru 1. Úvodní komentář 2. Deklarace balíčku 3. Import balíčků /* * Jméno třídy * * Verze * * Datum * * Copyright */ 4. Deklarace rozhraní a tříd 4

importy Deklarace třídy metoda lokální proměnná import java.awt.*; import java.awt.geom.*; public class Kruh { private int prumer; private int xpozice; private int ypozice; private String barva; /* * Vytvoreni noveho kruhu na pozici 20,60 s barvou modra */ public Kruh() { prumer = 30; xpozice = 20; ypozice = 60; barva = "modra"; kresli(); hlavička třídy deklarace atributů konstruktor } /** * Posune kruh o nekolik bodu (o 20) doprava. */ public void posunvpravo() { posunhorizontalne(20); } /** * Nakresli kruh s aktualnimi parametry na platne. */ private void kresli() { Platno platno = Platno.getPlatno(); platno.setbarvapopredi(barva); platno.vybarvi(new Ellipse2D.Double(xPozice, ypozice, prumer, prumer)); platno.wait(10); } 5

Struktura deklarace třídy 1. Dokumentační komentář třídy /** */ 2. Hlavička třídy nebo rozhraní 3. Implementační komentář /* */ 4. Proměnné třídy (static) v pořadí public, protected, package, private 5. Instanční proměnné opět v uvedeném pořadí 6. Konstruktory třídy 7. Metody třídy seskupené do logicky souvisejících skupin (ne nutně dle viditelnosti) 6

Odsazování kódu Na jednom řádku by měl být jeden příkaz, deklarace jedné proměnné. Obsah bloku odsaďte vždy o 3 či 4 mezery. V rámci jednoho bloku by měly být všechny příkazy odsazeny stejně. while (...) { if (...) { prikaz1; prikaz2; } else { prikaz3; } prikaz4; } 7

Pravidla zalamování řádků Pokud je nutné řádek rozdělit, pak zalamovat za čárkou zalamovat před operátorem preferovat zalamování na vyšší úrovni vnoření zarovnat nový řádek se začátkem výrazu na řádku předchozím pokud vede předchozí pravidlo k nepřehlednosti, použít odsazení o 8 znaků 8

Komentáře Dokumentační Obsahují zejména specifikace Implementační poznámky k implementaci, popřípadě nastavení 9

Implementační komentáře Blokový před metodami k označení důležitých úseků Jednořádkový pokud je na samostatném řádku, pak mu předchází jeden řádek volný Do konce řádku často pokud potřebujeme zakomentovat kód krátký komentář /* * Blokový komentář */ /* komentář */ // komentář 10

Dokumentační komentáře Popisují třídy, rozhraní, konstruktory, metody a položky pro potřeby tvorby dokumentace /** Komentář */ nebo /** * Komentář */ Mohou obsahovat speciální argumenty začínající @ (např. @autor, @param, @see) 11

Základní pojmy programování Proměnná pojmenovaná část operační paměti, která slouží pro uložení určité hodnoty. jak velkou část paměti proměnná zabere závisí na datovém typu uložené hodnoty Konstanta pojmenovaná část operační paměti, která slouží pro uložení určité hodnoty, kterou ale není povoleno měnit. Datový typ určuje typ a velikost hodnoty ukládané do proměnné a určuje i množinu operací, které lze s hodnotou provádět. 12

Deklarace je zápis, kterým jsou v programu popsány a pojmenovány datové typy, konstanty, třídy a jejich atributy a metody deklarace metody je v Javě spojena s definicí, tj. metody jsou naplněny svým výkonným kódem - jsou implementovány 13

Deklarace proměnných Oznamuje překladači typ a identifikátor proměnné Určuje, kolik místa proměnná zabere v paměti Syntaxe: datový_typ identifikátor; datový_typ ident1, ident2; Příklad: int i; float a,b,c; int j = 20; explicitní inicializace deklarace + přiřazení hodnoty 14

Identifikátory slouží k pojmenování datových typů, konstant, proměnných, atributů, metod apod. skládají se z písmen, číslic, popřípadě znaku _ nesmějí obsahovat mezery, české znaky, operátory atd. nesmějí se shodovat s klíčovými slovy jazyka Java je Case-sensitive rozlišuje velká/malá písmena!!! Příklad: Student a student jsou dva rozdílné identifikátory - např. dvě rozdílné proměnné 15

Názvy identifikátorů Identifikátor by měl vystihovat obsah třídy, metody, datového atributu, proměnné, parametru, nepoužívejte krátké názvy nepoužívejte příliš dlouhé názvy výjimky z předchozího pravidla: iterační proměnná cyklu for (int i =0; i<10; i++) označení chyby v bloku catch catch (IOException e) označení události v handleru actionperformed(actionevent e) 16

Deklarace proměnných Doporučeno uvádět jednu deklaraci na řádek Mezi typem a identifikátorem lze dělat buď jednu mezeru nebo používat tabelátor Uvádět výhradně na začátku bloku za { Vždy inicializovat hodnoty proměnných v deklaraci, pokud lze int pocet; // počet instancí String jmeno; // jméno osoby 17

Pravidla pro pojmenování Třídy, rozhraní podstatná jména, každé slovo v identifikátoru začíná velkým písmenem velbloudí notace např. SeznamStudentu, MojeAplikace Metody slovesa první písmeno malé, každé další slovo začíná velkým písmenem např. vypisudajestudenta Proměnné stejné jako u metod nepoužívat _ srozumitelný identifikátor Konstanty - velká písmena, slova oddělená _ 18

Pravidla pro závorky Za příkazy if, while a for by měly být vždy uvedeny závorky. Kód se lépe kontroluje. if (cislo1 > cislo2) { System.out.println( Prvni cislo je vetsi ); } else {... 19

Klausule import celé jméno List a ArrayList v balíčku java.util je java.util.list a java.util.arraylist private java.util.list <String> seznam = new java.util.arraylist<string>(); programátor si může zjednodušit psaní pomocí importu: import java.util.list; import java.util.arraylist; případně (nedoporučuje se) import java.util.*; automatický import java.lang.*; možnost kolize jmen, např. List je v java.util a v java.awt private List <String> seznam = new ArrayList<String>(); 20

Pravidla pro import neduplikujte import java.io.*; import java.io.file; neimportujte java.lang neimportujte zbytečně neimportujte z aktuálního balíčku package mujbalik; import mujbalik.mojetrida; public class MojeTrida2 {... 21

Zbytečný kód Nedeklarujte proměnné, které nepoužijete. Nepište private metody, které nepoužijete. Nedeklarujte formální parametry metody, které nepoužijete. Nikde v programu by se neměly vyskytnout prázdné příkazy if, try, while, finally, switch. 22

Další pravidla Nekonečný cyklus pište pomocí while ne for, použití for evokuje vždy, že autor ví, kolik bude průběhů cyklu. Pozor na iterační proměnné ve vnořených cyklech for for (int i = 0; i<10; i++) { for (int j = 0; j<10;i++) { 23

Další pravidla Nepoužívejte formální parametr metody na levé straně přiřazovacího příkazu private void metoda (int parametr) { parametr = 5;... Ve větvi case příkazu switch by měly být 1-4 příkazy. Pokud jich potřebujete víc, napište pro ně metodu. 24

Pravidla pro String Při vytváření instancí nepoužívejte přímo konstruktor, ale zjednodušený zápis. ne String text = new String ( Textik ); String text = Textik ; ano Nikdy nevolejte metodu tostring() pro instanci Stringu String text = Textik ; String dalsitext = text.tostring(); ne 25

Možnosti pro ověření "správnosti" kódu Simulace na papíře Dvojí čtení kódu Ladící výpisy obsažené přímo v kódu Debugging Programming By Contract (assert) Jednotkové testování tříd 26

Výpisy přímo z kódu System.out.println nejjednodušší řešení je třeba po odladění odstraňovat z kódu Logování pomocí parametrů je možno zapínat a vypínat různé druhy výpisů java.util.logging log4j 27

Debugging Použití speciálního nástroje Degugger buď samostatně nebo je součástí vývojového prostředí Pomocí zarážek (breakpointů) zastavuje provádění kódu a umožňuje krokování a prohlížení obsahu proměnných a datových atributů 28

Debugger v BlueJ Spuštění přes volbu Zobrazit Umožňuje nastavit zarážky a krokovat kód Umožňuje prohlížení aktuálního obsahu proměnných 29

Tvorba dokumentace kódu Podpora pro tvorbu dokumentace je zabudována již přímo v jazyce. Součástí J2SDK je nástroj javadoc, který generuje dokumentaci přímo ze zdrojových kódů tříd opatřených strukturovanými komentáři. 30