Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Robert Style Kodowania formatowanie kodu konwencje nazewnicze konwencje programistyczne dokumentowanie kodu struktura.

Podobne prezentacje


Prezentacja na temat: "Robert Style Kodowania formatowanie kodu konwencje nazewnicze konwencje programistyczne dokumentowanie kodu struktura."— Zapis prezentacji:

1 Robert

2 Style Kodowania formatowanie kodu konwencje nazewnicze konwencje programistyczne dokumentowanie kodu struktura projektu używanie pakietów logowanie pliki JAR

3 Formatowanie kodu pliki źródłowe nie powinny zawierać więcej niż 2000 linii kodu - zwiększa to przejrzystość struktury programu i przyspiesza wyszukiwanie interesujących nas fragmentów każda linia powinna się mieścić w oknie edytora (standardowo 80 znaków) - łatwiej zrozumieć wyrażenia, które da się objąć w całości wzrokiem public static void copyFile(String source, String destination) { /* do something */ } - przełamany fragment linii należy poprzedzić szerokim wcięciem robiąc wcięcia, sugerowane jest, aby nie używać znaków spacji (zamiast tego lepiej użyć tabulatora) - dzięki temu osoba pracująca z naszym kodem w innym edytorze może dostosować szerokość odstępów nie ingerując w nasz kod, ale jedynie poprzez zmianę domyślnej szerokości tabulacji - większe wcięcia zwiększają czytelność kodu Uwagi ogólne

4 Formatowanie kodu mile widziana jest spacja po przecinkach w liście parametrów funkcji - zwiększa to czytelność deklaracji podczas wykonywania działań należy rozdzielać zmienne od operatorów public static int addNumbers(int first, int second) { return first + second; } Białe znaki result = (variable1 + variable2) / variable3; odstęp powinien się również znaleźć w instrukcji rzutowania BaseClass myClass = (BaseClass) yourClass; umieszczanie spacji pomiędzy nazwą funkcji i okrągłymi nawiasami zmniejsza czytelność

5 Formatowanie kodu konstrukcja instrukcji if Instrukcje sterujące if (condition) { statements; } else { statements; } if (condition) { statements; } - mile widziane jest używanie nawiasów klamrowych po if, nawet jeśli nie są one wymagane

6 Formatowanie kodu konstrukcja pętli do i do-while konstrukcja pętli for while (condition) { statements; } Instrukcje sterujące for (initialization; condition; update) { statements; } do { statements; } while (condition);

7 Formatowanie kodu konstrukcja instrukcji switch Instrukcje sterujące switch (condition) { case ONE: statements; /* falls through */ case TWO: statements; break; default: statements; break; } - jeżeli po case nie zamierzamy wstawić instrukcji break należy to zaakcentować komentarzem - wewnątrz każdej instrukcji switch powinna się znaleźć opcja default (może być pusta)

8 Formatowanie kodu przechwytywanie wyjątków Instrukcje sterujące try { statements; } catch (Exception ex) { statements; } finally { statements; } - nie należy pozostawiać nie obsłużonych wyjątków return nie jest funkcją, więc nie należy stawiać po nim nawiasów - użycie nawiasów jest wskazane, jeśli wyrażenie zwracane przez funkcje jest skomplikowane return value; return ((a > b) ? a : b);

9 Formatowanie kodu każda zmienna powinna być deklarowana w nowej linii Deklaracje MyClass myObject1; MyClass myObject2; - długie deklaracje nie są przejrzyste deklaracje metod powinny zawierać informacje o rzucanych wyjątkach - w języku JAVA wymusza to kompilator! public void doSomething() throws Exception { statements; } liczba argumentów funkcji nie powinna być zbyt duża - funkcje takie są niewygodne w użyciu

10 Formatowanie kodu nazwy klas i interfejsów powinny się rozpoczynać wielką literą tak samo każde słowo składające się na nazwę; niewskazane jest używanie separatorów Nazwy class MyClass extends YourClass { /* body */ } nazwy metod i zmiennych rozpoczyna się mała literą, występujące dalej słowa pisze się już wielką literą - wyjątkiem są konstruktory, które mają nazwę identyczną z nazwą klasy public int getDifference(int a, int b) { int value = a – b; return value; } dla stałych używa się wyłącznie wielkich liter i separatorów (podobnie jak w C) final int CONST_VALUE = 100;

11 Formatowanie kodu do tworzenia nazw pakietów używa się wyłącznie małych liter, bez separatora _ Nazwy package domain.company.project.module; - przypominają odwrócony adres internetowy import java.applet.Applet; - duże litery mogą wystąpić tylko w nazwach klas

12 Formatowanie kodu nie powinno się używać zmiennych zadeklarowanych jako public (chyba, że public static final) Dodatkowe konwencje konwencje public void setName(String name) { this.name = name; } zamiast tego można (trzeba) deklarować metody typu get/set public String getName() { return name; } public bool isActive() { return active; } - metody te nie powinny nic robić poza zwracaniem i ustawianiem wartości

13 Formatowanie kodu wszelkie gotowe wartości liczbowe powinny być umieszczane w kodzie jako stałe Dodatkowe konwencje konwencje public MyClass(String name) { this.name = name; } - pozwoli nam to w przyszłości szybko wprowadzać modyfikacje oraz zwiększy czytelność kodu wewnątrz konstruktorów (i funkcji typu set) dobrze jest używać konstrukcji w stylu this.variable = variable w dobrym stylu jest przeładowywać metody dziedziczone z klasy Object (np. toString(), equals()) importując pakiety powinno się użyć nazwy konkretnej klasy (zamiast *) import java.applet.Applet public String toString() { return (My name is: + name + surname); }

14 Dokumentowanie kodu tworzenie dokumentacji jest niezbędne w każdym większym projekcie informatycznym Dokumentacja - dzięki temu możemy sobie szybciej przypomnieć, w jaki sposób zachowują się nasze klasy oraz umożliwić analizę kodu osobom trzecim dokumentacja powinna być pisana w języku angielskim komentarze powinny dotyczyć klas, interfejsów, zmiennych i metod - zapewni to spójność z istniejącymi standardami (np. javadoc) dobrze jeśli komentarze są tworzone na bieżąco składnia komentarzy /* comment */ // comment /** comment */ - komentarz mogący się rozciągać na wiele wierszy - komentarz w jednym wierszu - komentarz javadoc (javadoc pomija każdy inny komentarz!)

15 Dokumentowanie kodu najważniejsze znaczniki dokumentacyjne Dokumentacja - są umieszczane wewnątrz komentarzy, na ich podstawie tworzona jest dokumentacja przez program MyClass#methodFromMyClass w dokumentacji wygenerowanej przez javadoc w tym miejscu zostaną umieszczone odnośniki do MyClass i metody paramether what opis wersji autor parametry wartość zwracana typy rzucanych wyjątków Sugeruje by nie używać danej właściwości (w przyszłości może zostać usunięta)

16 Dokumentowanie kodu komentowanie klas Dokumentacja - powinien się znaleźć komentarz o relacjach klasy z innymi klasami informacje o autorach i wersji komentowanie metod - opisany powinien być sposób działania metody, odwołania do innych metod przyjmowane parametry wyjątki i wartość zwracana nagłówki plików - każdy plik projektu powinien zaczynać się informacją o swojej zawartości dodatkowe komentarze - jeżeli instrukcjom języka JAVA będą towarzyszyć słowne informacje o działaniu zastosowanych algorytmów, przyszła analiza budowy metod i klas będzie łatwiejsza

17 Dokumentowanie kodu przykład dokumentowania Dokumentacja // HelloWorld.java // Writes Hello World! onto screen import java.lang.System; /** My first class in JAVA Robert Strack 1.0 */ public class HelloWorld { /** Function only says Hello World! args String used for holding parameters Nothing */ public static void main(String[] args) { System.out.println(Hello World!); }

18 Dokumentowanie kodu przykład dokumentowania (gotowa dokumentacja przy użyciu javadoc) Dokumentacja

19 Struktura projektu struktura katalogów powinna wyglądać następująco: Struktura katalogów Struktura katalogów projektu optoprogramowanie niezbędne w procesie kompilowania i instalowania oprogramowania (jdk, ant, jikes) srckatalog z plikami źródłowymi projektu build.batplik przygotowujący środowisko projektu (ustawienie odpowiednich zmiennych środowiskowych, uruchomienie anta) build.xmlplik konfiguracyjny programu ant src/configpliki konfiguracyjne projektu src/databaseskrypty bazodanowe projektu src/docsdokumentacja projektowa i inne dokumenty związane z projektem src/etcpliki deployment descriptor src/resourcespliki resource deployment descriptor dla iAS src/tldspliki tag lib descriptiors src/javapliki źródłowe Javy src/testpliki źródłowe Javy dla testów src/webpliki html, jsp, gif, jpeg libdodatkowe biblioteki jar i zip buildkatalog tymczasowy dla skompilowanych źródeł Javy oraz dokumentacji Javadoc assemblykatalog tymczasowy dla plików war, jar, ear distkatalog tymczasowy z dystrybucją projektu

20 Pakiety pakiet – jest to zbiór klas i interfejsów z kontrolą dostępu do nich i własną przestrzenią nazw (odpowiednik biblioteki w C) Wykorzystywanie pakietów pakietów zamieszczając klasy w pakiecie: - możemy zaznaczyć, że są one ze sobą powiązane - ich nazwy nie wchodzą w konflikt z nazwami innych klas - pakiet posiada własną przestrzeń nazw - możemy pozwolić, aby klasy z naszego pakietu miały nieograniczony dostęp do siebie nawzajem i jednocześnie były niewidoczne dla klas spoza pakietu (ukrywanie implementacji) - poprzez pakiety budujemy logiczną strukturę projektu

21 Pakiety w celu dołączenia klasy (klas) do pakietu używamy konstrukcji Tworzenie pakietów pakietów aby użyć klas lub interfejsów wchodzących w skład pakietu posługujemy się konstrukcją - instrukcja powinna być podana przed definicjami klas (na początku pliku) package name.of.this.package; - instrukcja powinna być podana przed definicjami klas (na początku pliku) import name.of.this.package; jeden plik może zawierać dowolną ilość klas, ale tylko jedna z nich może być zadeklarowana jako public klasy nie zadeklarowane jako publiczne nie są widoczne poza pakietem

22 Pakiety do klasy znajdującej się w zaimportowanym pakiecie możemy się odwołać przez jej nazwę, lub podając pełną nazwę pakietu z którego klasa pochodzi + nazwę klasy Tworzenie pakietów pakietów - dzięki temu pojawienie się dwóch klas o identycznych nazwach, ale zawartych w innych pakietach nie jest problemem (klasy te są rozróżnialne) String name; java.lang.String name;

23 Logowanie rejestracja polega na tworzeniu i gromadzeniu informacji o wykonującym się programie (najczęściej w celu usunięcia błędów lub zwiększenia wydajności) Rejestracja - informacje można wypisywać wstawiając w kod programu wywołania procedur System.out.println(), ale taki sposób rejestracji nie jest wygodny - zamiast tego można użyć klasy java.util.logging.Logger przewaga logowania nad zwykłym wypisywaniem informacji do pliku, czy na ekran: - jeżeli program już działa poprawnie nie potrzebujemy usuwać linii w których rejestrowaliśmy komunikaty o przebiegu jego działania... wystarczy, że wyłączymy Loggera (występowanie wywołań metod klasy Logger nie spowolni pracy programu) - możemy w łatwy sposób zmieniać sposób rejestrowania (wypisanie na ekran, do pliku a nawet wysłanie mailem!) - istnieje możliwość filtrowania komunikatów ze względu na ich wagę

24 Logowanie każda wiadomość ma przypisaną wagę (poziom): Rejestracja - SEVERE - WARNING - INFO - CONFIG - FINE - FINER - FINEST ustawiając poziom logowania dla konkretnego obiektu klasy Logger możemy przefiltrować wiadomości jakie dla nas rejestruje Logger logger = Logger.getLogger(logger name); logger.setLevel(Level.INFO); logger.warning(warning); logger.info(information); logger.fine(other information); - w powyższym przykładzie wypisana zostanie informacja information i warning (wypisywane są informacje o poziomie równym lub wyższym od ustalonego) - dodatkowo poziomy OFF i ALL (do włączania i wyłączania rejestracji)

25 Logowanie aby zmienić sposób rejestracji (np. skierować informacje do pliku) należy się posłużyć klasą Handler (i klasami po niej dziedziczącymi) Rejestracja Logger logger = Logger.getLogger(logger name); logger.addHandler(new FileHandler(file.xml)); logger.info(information); - informacja zostanie zapisana do pliku file.xml - inne klasy pochodne od klasy Handler: ConsoleHandler, MemoryHandler... jeżeli chcemy zapisywać wyniki w zwykłym pliku tekstowym, dodatkowo trzeba się posłużyć obiektem klasy Formatter (lub po niej dziedziczącym) Logger logger = Logger.getLogger(logger name); logger.setFormatter(new SimpleFormatter()); logger.addHandler(new FileHandler(file.txt)); logger.info(information);

26 Logowanie możliwe jest oczywiście rozbudowywanie funkcji klas Formatter (klasy formatującej dane), Handler (klasy obsługującej magazynowanie danych) i Filter (klasy zajmującej się filtrowaniem informacji) poprzez dziedziczenie – stworzenie tym samym w pełni odpowiadającego nam systemu rejestracji Rejestracja pakiet java.util.logging zawiera jeszcze wiele przydatnych funkcji – są one opisane w dokumentacji

27 Logowanie podobne możliwości daje nam pakiet org.apache.log4j Rejestracja Logger logger = Logger.getLogger(logger name); logger.setLevel(Level.INFO); logger.info(information); - używa się go podobnie jak pakietu java.util.logging log4j daje nam duże możliwości konfiguracji - wewnątrz kodu programu BasicConfigurator.configure(); automatyczna konfiguracja (poziomy logowania są ustawiane na domyślne wartości) - za pomocą pliku konfiguracyjnego PropertyConfigurator.configure(configuration.conf); zostanie użyty plik konfiguracyjny configuration.conf

28 Logowanie przykład budowy pliku konfiguracyjnego Rejestracja # ustawiamy poziomu logowania na DEBUG # chcemy, aby rejestrowane wiadomości były wyświetlane # na ekranie i zapisywane do pliku log4j.rootLogger = DEBUG, screen, file # screen służy do wypisywania wiadomości na ekran log4j.appender.screen = org.apache.log4j.ConsoleAppender # ustalamy sposób wypisywania (data, priorytet i wiadomość) log4j.appender.screen.layout = org.apache.log4j.PatternLayout log4j.appender.screen.layout.ConversationPattern = [%d] %p: %m

29 Logowanie przykład budowy pliku konfiguracyjnego (cd.) Rejestracja # identycznie konfigurujemy sposób zapisywania do pliku log4j.appender.file = org.apache.log4j.RollingFileAppender log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversationPattern = [%d] %p: %m # zapisywać informacje będziemy w file.log log4j.appender.file.File = file.log # maksymalna wielkość pliku log4j.appender.file.MaxFileSize = 10KB # niech zapisuje tylko do jednego pliku log4j.appender.file.MaxBackupIndex = 1

30 Archiwa JAR archiwa JAR zawierają skompresowane pliki niezbędne do prawidłowej pracy programu Użytkowanie JAVA Archive JAVA Archive tworzenie archiwów JAR: - są to nie tylko pliki *.class, ale również pliki zawierające grafikę lub dźwięk c – stwórz archiwum f – z pliku (nie z wiersza poleceń!) v – wyświetl dokładny opis 0 – (zero) bez kompresji jar cvf file.jar input_files przeglądanie archiwów JAR: t – lista zawartości f – z pliku (nie z wiersza poleceń!) v – wyświetl dokładny opis jar tvf file.jar - dzięki temu cały program mieści się w jednym archiwum

31 Archiwa JAR wypakowywanie archiwów JAR: Użytkowanie JAVA Archive JAVA Archive uaktualnianie archiwów JAR: u – uaktualnij m – przy okazji uaktualnia manifest (są w nim przechowywane informacje o zawartości archiwum) f – z pliku (nie z wiersza poleceń!) v – wyświetl dokładny opis jar uvf file.jar new_files x – wypakuj f – z pliku (nie z wiersza poleceń!) v – wyświetl dokładny opis jar xvf file.jar [what]

32 Archiwa JAR uruchamianie archiwów JAR: Użytkowanie JAVA Archive JAVA Archive - uruchamia metodę main z klasy ClassName jre -cp file.jar ClassName - wcześniej należy jednak dodać do archiwum informację o tym z której klasy będzie pobierana metoda main np.: java -jar file.jar jar cvmf MainClassFile.conf HelloWorld.jar HelloWorld.class - gdzie plik MainClassFile.conf zawiera linijkę Main-Class: HelloWorld.class - stworzy to archiwum JAR o nazwie HelloWorld.jar, zawierające klasę HelloWorld.class, które można uruchomić poleceniem java –jar

33 Archiwa JAR istnieje możliwość użycia archiwów JAR na stronach internetowych (jako applety) Użytkowanie JAVA Archive JAVA Archive - przyspieszamy tym czas pobierania plików z serwera

34


Pobierz ppt "Robert Style Kodowania formatowanie kodu konwencje nazewnicze konwencje programistyczne dokumentowanie kodu struktura."

Podobne prezentacje


Reklamy Google