Wybór i kolejność moja
Zostaw obozowisko w lepszym stanie
niż je zastałeś.
Clean Code, strona 14
Zepół programistyczny powinien zgodzić się na wspólny styl formatowania, który będzie praktykowany i pilnowany przez wszystkich.
Clean Code, strona 90
Wybór i kolejność moja,
dużo slajdów przed nami :)
Clean Code, rozdział 2
Przede wszystkim nazwy powinny być:
Generalnie nazwy powinny przekazywać zamiary programisty.
Nie
int d; // elapsed time in days
Tak
int elapsedTimeInDays;
int daysSinceCreation;
int daysSinceModification;
int fileAgeInDays;
Nazwy nie powinny wymagać mental mappingu.
Przykład: Zamiast jednoliterowych liczników w pętlach np. i powinno używać się docelowych konceptów, np. customerIndex.
Nazwy metod powinny być czasownikami, mieć uzgodniony słownik słów kluczowych.
Przykłady potencjalnych słów kluczowych: fetch, retrieve, get.
Nazwy powinny czerpać ze wzorców projektowych, jeśli są adekwatne.
Na przykład: coursor, queue, view.
Nazwy powinny mieć sens w kontekście w którym występują.
Clean Code, rozdział 3
Przede wszystkim funkcje powinny:
Jeśli wewnątrz funkcji jest zagnieżdżenie, powinno być odwołaniem do innej funkcji.
Funkcja powinna mieć minimalną możliwą liczbę argumentów.
Należy unikać argumentów - flag, lepiej rozdzielić funkcję na dwie.
Należy unikać argumentów "wyjściowych".
Potencjalne długie listy argumentów można przekształcić w obiekty.
Jeśli wystąpił błąd, funkcja powinna rzucać wyjątek zamiast zwracać kod błędu.
Clean Code, rozdział 4
Generalnie komentarze powinny:
Nigdy nie mogą być zastępstwem dla jasnego, czytelnego kodu.
Clean Code, rozdział 5
Zmienne powinny być zadeklarowane w pobliżu miejsca ich użycia.
Zmienne instancyjne powinny być zadeklarowane na górze klasy.
Funkcje zależne powinny być zdefiniowane w pobliżu funkcji je wykorzystujących.
Clean Code, rozdział 6
Struktury danych oferują zamknięty zbiór metod, wymagają wiedzy o przechowywanych danych do wykonania operacji "biznesowych".
Obiekty powinny ukrywać wewnętrzną organizację danych i udostępniać metody manipulacyjne mające sens "biznesowy".
Nie
final String outputDir = ctxt.getOptions().getScratchDir()
.getAbsolutePath();
Tak
ctxt.getAbsolutePathOfScratchDirectoryOption();
ctxt.getScratchDirectoryOption()
.getAbsolutePath();
Clean Code, rozdział 7
Rzucane powinny być wyłącznie unchecked exceptions.
Użycie checked exception wymaga deklaracji rzucenia tego wyjątku we wszystkich funkcjach w hierarchii wywołań aż do catch.
?
Funkcje nigdy nie powinny zwracać null i nie powinno się nigdy przekazywać null do funkcji.
Clean Code, rozdział 9
Cały kod powinien być pokryty testami.
Pisanie testów powinno być zgodne z trzema zasadami Test Driven Development:
Testy powinny być:
Clean Code, rozdział 10
Klasy powinny: