Inżynieria Oprogramowania

Podobne dokumenty
Javadoc. Piotr Dąbrowiecki Sławomir Pawlewicz Alan Pilawa Joanna Sobczyk Alina Strachocka

Kurs programowania. Wykład 7. Wojciech Macyna. 25 kwietnia 2017

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

1 Podstawy c++ w pigułce.

Język JAVA podstawy. Wykład 3, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Zadanie 9. Projektowanie stron dokumentu

Klasy i obiekty cz II

Programowanie obiektowe

Laboratorium 01: Poznanie środowiska programowania w języku Java [2h]

Programowanie w Javie

Aplikacje w środowisku Java

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Podstawowe części projektu w Javie

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

Po zakończeniu rozważań na temat World Wide Web, poznaniu zasad organizacji witryn WWW, przeczytaniu kilkudziesięciu stron i poznaniu wielu nowych

Rozdział 4 KLASY, OBIEKTY, METODY

Aplikacje w środowisku Java

Projektowanie aplikacji internetowych laboratorium

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

1 Podstawy c++ w pigułce.

Wybrane narzędzia wspomagające dokumentowanie programu

Ćwiczenia nr 2. Edycja tekstu (Microsoft Word)

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

Programowanie obiektowe

Języki skryptowe w programie Plans

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Zadanie 1. Stosowanie stylów

Programowanie obiektowe

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Praca w środowisku Visual Studio 2008, Visual C

Powtórka algorytmów. Wprowadzenie do języka Java.

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Ćwiczenie 1. Przygotowanie środowiska JAVA

Java EE produkcja oprogramowania

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Programowanie obiektowe

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Programowanie obiektowe zastosowanie języka Java SE

JDK można pobrać ze strony

Programowanie Obiektowe GUI

Testowanie II. Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage).

Tworzenie dokumentacji

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

MS Word Długi dokument. Praca z długim dokumentem. Kinga Sorkowska

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Wprowadzenie do Doctrine ORM

UML a kod. C++, Java i C#

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Platformy Programistyczne Podstawy języka Java

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

TABULATORY - DOKUMENTY BIUROWE

Programowanie obiektowe

Programowanie w Internecie. Java

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

KOTLIN. Język programowania dla Androida

Program szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS

Jak ustawić cele kampanii?

Fragment tekstu zakończony twardym enterem, traktowany przez edytor tekstu jako jedna nierozerwalna całość.

Multimedia JAVA. Historia

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Struktura języka HTML ZNACZNIKI. Oto bardzo prosta strona WWW wyświetlona w przeglądarce: A tak wygląda kod źródłowy takiej strony:

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

NAGŁÓWKI, STOPKI, PODZIAŁY WIERSZA I STRONY, WCIĘCIA

Podstawy i języki programowania

Instrukcja obsługi Multiconverter 2.0

Zadaniem tego laboratorium będzie zaznajomienie się z podstawowymi możliwościami kompozycji strony i grafiki

Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:

Podstawy programowania skrót z wykładów:

1. Przypisy, indeks i spisy.

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Zaawansowane aplikacje WWW - laboratorium

Technologie informacyjne: Arkusz kalkulacyjny

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Dziedziczenie. Tomasz Borzyszkowski

Instrukcja obsługi DHL KONWERTER 1.6

Tworzenie raportów. Ćwiczenie 1. Utwórz Autoraport przedstawiający tabelę Studenci

Powtórka algorytmów. Wprowadzenie do języka Java.

Wstęp do programowania. Wykład 1

Testowanie I. Celem zajęć jest zapoznanie studentów z podstawami testowania ze szczególnym uwzględnieniem testowania jednostkowego.

NAGŁÓWKI, STOPKI, PODZIAŁY WIERSZA I STRONY, WCIĘCIA

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

Programowanie w Ruby

Programowanie w języku Python. Grażyna Koba

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

Cw.12 JAVAScript w dokumentach HTML

System operacyjny Linux

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.

1 Atrybuty i metody klasowe

Transkrypt:

Inżynieria Oprogramowania Standardy kodowania i dokumentowanie kodu (Na przykładzie języka Java i dokumentacji Javadoc) Cel zajęć Celem zajęć jest zapoznanie studentów z podstawowymi zasadami formatowania i dokumentowania kodu. Oba zagadnienia przedstawione zostaną na podstawie języka Java i narzędzia do tworze - nia dokumentacji Javadoc. Część I. Standardy kodowania Przedstawione wskazówki dotyczące formatowania kodu, są połączeniem ogólnie przyjętych dobrych praktyk i standardu kodowania dla języka Java: Sun Microsystems: Java Code Conventions, Mountain View, California 1997 http://java.sun.com/docs/codeconv/codeconventions.pdf 1. Nazwy plików Wszystkie nazwy powinny być unikalne, nie powinno się używać znaków specjalnych takich jak np. '#', '~', '\t', or '\n', oraz znaków narodowych. Pliki nie powinny nosić nazw zarezerwowanych dla urządzeń I/O lub portów: lpt1, com4, irq8. 2. Struktura pliku źródłowego Każdy plik źródłowy w Javie (.java), powinien zawierać pojedynczą klasę publiczną albo interfejs. Powiązane klasy prywatne mogą być umieszczone w tym samym pliku źródłowym, jednak ich nagłówek powinien wystąpić dopiero po klasie publicznej, czy interfejsie. Sekcje pliku źródłowego: Nazwa pakietu Sekcja importów Klasa publiczna albo interfejs o Nagłówek klasy/interfejsu -> nazwa z dużej litery, później na przemian - MojaKlasa o Pola statyczne klasy całość wielkimi literami z _ - MOJA_STALA o Pola klasy (każde pole w nowej linii) pierwszy znak z małej litery, później na przemian - mojepole Publiczne Chronione Prywatne o Konstruktory nazwa klasy o Metody (według funkcjonalności jaką udostępniają) tak jak pola mojametoda

3. Formatowanie kodu Dobre praktyki dotyczące formatowania kodu Wcięcie linii na 4 spacje (Tabulacje vs Spacje), Długość linii nie większa niż 80 znaków, Operatory i średniki oddzielaj spacjami, Jedno polecenia - jedna linia, Zawijanie linii jeśli wyrażenie nie mieści się w pojedynczej linii: o Złam linię po przecinku, o Złam linie przed operatorem, o Dokonuj wcięcia na głębokość taką samą jak kod w linii nadrzędnej tego samego poziomu Przykłady: Łamanie wierszy podczas wywołania metody: function(longexpression1, longexpression2, longexpression3, longexpression4, longexpression5); var = function1(longexpression1, function2(longexpression2, longexpression3)); Łamanie wierszy w przypadku wyrażeń arytmetycznych. Staraj się łamać wiersze pozostając na tym samym zagnieżdżeniu wyrażeń: + poprawnie longname1 = longname2 * (longname3 + longname4 - longname5) + 4 * longname6; - unikaj longname1 = longname2 * (longname3 + longname4 - longname5) + 4 * longname6; Łamanie wierszy w nagłówkach metod: Kolejne wiersze zagłębiamy, aż do otwierającego nawiasu parametrów somemethod(int anarg, Object anotherarg, String yetanotherarg, Object andstillanother) {... Kolejne wiersze parametrów zagłębiamy 8 spacjami: private static synchronized horkinglongmethodname(int anarg, Object anotherarg, String yetanotherarg, Object andstillanother) {... Zawijanie wierszy w wyrażeniach warunkowych. Staraj się używać 8 spacji, tak aby odróżnić wyrażenie warunkowe od kodu (ten wcinany jest przy użyciu 4 spacji) if ((condition1 && condition2) (condition3 && condition4)!(condition5 && condition6)) { dosomethingaboutit();

4. Formatowanie kodu w IDE - Eclipse Eclipse, jako środowisko do wytwarzania oprogramowania wspiera automatyczne formatowanie kodu. Aby, sformatować kod wybierz z menu Source->Format [Ctrl+Shift+F] przy aktywnym edytorze z kodem źródłowym. Możesz spróbować na kodzie w pakiecie pl.put.io.code.format. Istnieje możliwość konfiguracji auto-formatowania kodu, tak by spełniało nasze oczekiwania. Opcje formatowania znajdują się w Window->Preferences->Java->Code Style. Formatter Umożliwia konfigurację automatycznego formatowania kodu. Ćwiczenie: 1. Dodaj nowy profil IO (New ) bazujący na Eclipse [built-in] 2. Zmień sposób formatowania {, tak otwierający nawias był umieszczany w następnej linii po wyrażeniu. if (true) { 3. Zmień sposób formatowania wyrażeń if else, tak by po nawiasie otwierającym sekcje warunku dołożona została spacja. if ( true) { 4. Dodaj 4 linie pomiędzy nagłówkiem klasy, a pierwszą deklaracją. 5. Wzorce kodu Eclipse posiada możliwość tworzenia wzorców kodu (nie tylko dla edytora Javy). Wzorce kodu pozwalają zwiększyć efektywność programisty, dodatkowo zapewniają standard kodu (o ile są dobrze przygotowane). Wzorce dla edytora Javy można znaleźć w ustawieniach Java->Editor->Templates.

Wzorzec może posiadać dowolny kod. Można wykorzystywać predefiniowane zmienne, pod które podstawione są dostępne w kontekście wartości. Dla przykładu przeanalizujmy wzorzec dla pętli for iterującej po tablicy: for (int ${index = 0; ${index < ${array.length; ${index++) { ${line_selection${cursor Zmienne wyróżniane są poprzez znak ${zmienna. Istnieją predefiniowane zmienne, ale możemy dodawać nowe. W przykładzie powyżej zmienna ${index będzie wykorzystana jako licznik w pętli. Dodatkowo użyto predefiniowanej zmiennej ${array, która określa typ tablicowy poszukiwany w kontekście użycia. Wewnątrz bloku znajduje się wyrażenie ${line_selection${cursor, które zaznacza linię i dodaje miejsce w którym znajdzie się kursor (jeśli wywołamy wzorzec w kodzie za pomocą klawisza [TAB] możemy poruszać się po polach zmiennych (także polach ${cursor). Ćwiczenie: 1. Dodaj nowy wzorzec load_text_file. 2. Wzorzec ten powinien udostępniać fragment kodu umożliwiający operowanie linia po linii na pliku tekstowym. 3. Wykorzystaj klasy BufferedReader, FileReader. 4. Jako parametr dla konstruktora klasy FileReader powinien być wykorzystany obiekt klasy java.io.file, który poszukiwany będzie jako pole w klasie lub zmienna lokalna. Część II. Dokumentowanie kodu Dokumentacja kodu opiera się na dwóch filarach. Podstawą dokumentacji są komentarze umieszczone w kodzie. Z drugiej strony czytelny kod jest samo-komentujący się. Niestety, jeśli kod, który piszesz jest niezrozumiały i źle sformatowany, to żaden komentarz nie pomoże drugiej osobie zrozumieć twoich intencji. Wyróżniamy dwa typy komentarzy: Pierwszy nazywany jest implementacyjnym. Pozostaje on tylko w kodzie i ułatwia jego czytanie. W tym przypadku używamy komentarzy: // jednoliniowych, /* */ blokowych.

Drugi typ komentarzy nazywa się dokumentacyjnym. Oprócz polepszenia czytelności kodu ma on dodatkową zaletę, w postaci możliwości automatycznego wygenerowania dokumentacji w różnych formatach prosto z kodu. Komentarz taki umieszcza się w blokach /** */. Ten typ komentarzy jest przede wszystkim pożądany w przypadku pól i metod publicznych. Kompletny podręczniki Javadoc można znaleźć na stronie: http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html 1. Tagi Javadoc Zanim przystąpimy do opisu komentarzy w konkretnych miejscach plików źródłowych zapoznaj się ze składnią i przeznaczeniem tagów wykorzystywanymi w komentarzach Javadoc. @author Jan Kowalski autor danego artefaktu, @version wersja artefaktu, @since wersja aplikacji, w której podany artefakt został dodany do API, @deprecated użycie danego artefaktu nie jest zalecane, ponieważ został on już zastąpiony przez inny. Należy podać link do artefaktu, który powinien być użyty w zamian (@link), @see NazwaKlasy, @see NazwaKlasy#nazwaMetody(), @see #nazwametodywtejklasie(), @see #nazwapolawtejklasie itd. referencje do klas, interfejsów, metod, które są powiązane z opisywanym artefaktem, {@link NazwaKlasy, {@link NazwaKlasy#nazwaMetody(), {@link #metodawtejklasie(), {@link #nazwapolawtejklasie itd. podobnie jak @see, ale umożliwia tworzenie odnośników do klasy, interfejsu, metody, pola wewnątrz akapitu, @param mojparametr opis parametru metody, @return opis zwracanej wartości, @throws KlasaWyjatku opis sytuacji. 2. Formatowanie komentarzy Javadoc Podstawowe zasady tworzenia komentarzy Javadoc Staraj się nie używać nazw pochodzących z API, jeśli nie są to odnośniki do artefaktów (lepiej jest parafrazować zachowanie), Komentuj w trzeciej osobie, Używaj tagów <p> </p> do wyodrębnienia akapitów, Używaj tagów <code> </code> do fragmentów kodu w komentarzu. 3. Nagłówek pliku źródłowego Plik źródłowy powinien rozpoczynać się komentarzem zawierającym nazwę klasy oraz notę copyright. 4. Komentarz klasy / interfejsu Nad deklaracją klasy/interfejsu umieszczamy komentarz opisujący jej przeznaczenie. Dodatkowo stosuje się tagi: @author, @version, @see. 5. Komentarz do pola Każde publiczne, chronione pole powinno posiadać komentarz, który wyjaśnia do czego stosowane jest pole i jakie posiada ograniczenia. 6. Komentarz do metody Każda metoda publiczna, chroniona powinna posiadać komentarz opisujący jej przeznaczenie, jak również zestaw przyjmowanych parametrów (@param), wartość zwracaną (@return), czy rzuca wyjątkiem (@throws) i czy jest niezalecana (@deprecated).

7. Opis pakietu Każdy pakiet może zawierać plik package.html, który opisuje przeznaczenie pakietu. Jako opis zostanie wykorzystany cała jego zawartość pomiędzy tagami <body></body>. Można stosować tagi Javadoc. 8. Javadoc i Eclipse W środowisku Eclipse możemy bardzo szybko i wygodnie dodawać komentarze do danej jednostki kodu, wybierając opcję Source->Generate Element Comment [Alt+Shift+J]. Przy pomocy środowiska Eclipse bardzo łatwo wygenerować dokumentację w postaci stron HTML, przy użyciu narzędzia Javadoc. Z menu Project wybieramy opcję Generate Javadoc. Warto również pamiętać o możliwości podania parametrów do wywołania komendy javadoc na ostatniej stronie kreatora (przydatny może się okazać parametr -charset Kodowanie i -encoding Kodowanie, np. -charset UTF-8 -encoding UTF-8). Ćwiczenie: Wygeneruj dokumentacje dla pakietu pl.put.io.document (zwróć uwagę, że w klasie jest referencja do klasy java.lang.math. Sformatuj kod i dodaj komentarze do projektu NamesActivitiesPlaces oraz wygeneruj dokumentację Javadoc.