Sposób oceniania

Wystąpienie przynajmniej jednego przykrego zapachu obniża ocenę o 1 stopień. Wystąpienie dwóch różnych przykrych zapachów obniża ocenę o 2 stopnie. Nie przestrzeganie standardu kodowania oraz/lub błędy w dokumentacji technicznej obniża o 0,5 stopnia. Program z niepełną listą refaktoryzacji może mieć obniżoną ocenę o 1-2 stopnie. Program, który nie działa prawidłowo ma obniżaną ocenę o 0,5 stopnia. Program, którego nie można skompilować nie będzie oceniany. Program bez listy przeprowadzonych metod refaktoryzacji i przypadków testowych nie będzie oceniany.

Standard kodowania

Obowiązuje standard kodowania Sun Microsystems http://java.sun.com/docs/codeconv/index.html

Nazewnictwo kodu

Obowiązuje język angielski. Pola i zmienne to rzeczowniki, metody to frazy czasownikowe:

Przykre zapachy

Należy unikać następujących nieprawidłowych konstrukcji kodu.

Long Method (więcej informacji tutaj)

Data Class (więcej informacji tutaj)

Message Chains(więcej informacji tutaj)

Wywołanie wewnątrz metody badanej klasy metody, która nie jest metodą:

Middle Man (więcej informacji tutaj)

Feature Envy (więcej informacji tutaj)

Duplicated Code (więcej informacji tutaj)

Data Clumps (więcej informacji tutaj)

Long Parameter List (więcej informacji tutaj)

Speculative Generality (więcej informacji tutaj)

Dokumentacja techniczna do kodu

Kod należy opatrzyć komentarzami javadoc'a tak by można było z niego wygenerować dokumentację techniczną. Dokumentacja ma być w języku angielskim. Dokumentacja techniczna musi spełniać poniższe wymagania:

Zadanie

Metoda statement w klasie Customer zwraca łańcuch znaków reprezentujący konto klienta wypożyczalni filmów.

W klasie Customer należy dodać metodę public String htmlStatement(), która zwróci łańcuch html reprezentujący statement klienta wypożyczalni. Metodę tą należy także wyposażyć w testy.

Format html:
<html><head><title>Rental Record for ${name}</title><body> <table><thead><tr><td>Title</td><td>Amount</td></tr> </thead> <tbody><tr><td>${title}</td><td>${amount}</td></tr> </tbody></table></body></html>

Nie wolno utworzyć tej metody przez copy - paste programming (duplikaty) :) Należy wyodrębnić wspólny kod z metody statement a następnie wykorzystać go ponownie w htmlStatement. W tym celu należy wykorzystać przekształcenia refaktoryzacyjne poznane na wykładzie oraz Split Loop Pamiętajcie też o usunięciu przykrych zapachów. Wyjątkiem jest tutaj klasa Movie, która ma pozostać Data Class. Kod: Customer.java, Movie.java, Rental.java, CustomerTest.java

Do oceny należy przedstawić kody źródłowe klas, testy oraz listę dokonanych refaktoryzacji wraz z krótkim opisem po co je wykonano (w javadoc'u). Oto przykład:
Move Method - Customer.getAmount do Rental