Darmowa dostawa od 150,00 zł
Czysty kod. Podręcznik dobrego programisty
Promocja Okazja

Czysty kod. Podręcznik dobrego programisty

  • Rok wydania: 2010 Oprawa: miękka ISBN: 9788383223445 Ilość stron: 424 Format: 17,5 x 23,5 cm
Rozmiar

71,10 zł

brutto / 1szt.
Najniższa cena z 30 dni przed obniżką: 79,00 zł / szt.-10%
Cena regularna: 79,00 zł / szt.-10%
Cena katalogowa:
Możesz kupić za pkt.
z
Produkt dostępny w bardzo dużej ilości
Skontaktuj się z obsługą sklepu, aby oszacować czas przygotowania tego produktu do wysyłki.
Produkt dostępny w bardzo dużej ilości
Wysyłka
14 dni na łatwy zwrot
Bezpieczne zakupy
Odroczone płatności. Kup teraz, zapłać później, jeżeli nie zwrócisz
Kup teraz, zapłać później - 4 kroki
Przy wyborze formy płatności, wybierz PayPo.PayPo - kup teraz, zapłać za 30 dni
PayPo opłaci twój rachunek w sklepie.
Na stronie PayPo sprawdź swoje dane i podaj pesel.
Po otrzymaniu zakupów decydujesz co ci pasuje, a co nie. Możesz zwrócić część albo całość zamówienia - wtedy zmniejszy się też kwota do zapłaty PayPo.
W ciągu 30 dni od zakupu płacisz PayPo za swoje zakupy bez żadnych dodatkowych kosztów. Jeśli chcesz, rozkładasz swoją płatność na raty.
Po zakupie otrzymasz pkt.

Poznaj najlepsze metody tworzenia doskonałego kodu

  • Jak pisać dobry kod, a zły przekształcić w dobry?
  • Jak formatować kod, aby osiągnąć maksymalną czytelność?
  • Jak implementować pełną obsługę błędów bez zaśmiecania logiki kodu?

O tym, ile problemów sprawia niedbale napisany kod, wie każdy programista. Nie wszyscy jednak wiedzą, jak napisać ten świetny, „czysty” kod i czym właściwie powinien się on charakteryzować. Co więcej – jak odróżnić dobry kod od złego? Odpowiedź na te pytania oraz sposoby tworzenia czystego, czytelnego kodu znajdziesz właśnie w tej książce. Podręcznik jest obowiązkową pozycją dla każdego, kto chce poznać techniki rzetelnego i efektywnego programowania.

W książce „Czysty kod. Podręcznik dobrego programisty” szczegółowo omówione zostały zasady, wzorce i najlepsze praktyki pisania czystego kodu. Podręcznik zawiera także kilka analiz przypadków o coraz większej złożoności, z których każda jest doskonałym ćwiczeniem porządkowania zanieczyszczonego bądź nieudanego kodu. Z tego podręcznika dowiesz się m.in., jak tworzyć dobre nazwy, obiekty i funkcje, a także jak tworzyć testy jednostkowe i korzystać z programowania sterowanego testami. Nauczysz się przekształcać kod zawierający problemy w taki, który jest solidny i efektywny.

  • Nazwy klas i metod
  • Funkcje i listy argumentów
  • Rozdzielanie poleceń i zapytań
  • Stosowanie wyjątków
  • Komentarze
  • Formatowanie
  • Obiekty i struktury danych
  • Obsługa błędów
  • Testy jednostkowe
  • Klasy i systemy
  • Współbieżność
  • Oczyszczanie kodu

Niech stworzony przez Ciebie kod imponuje czystością!

O autorze

Robert C. Martin (Wujek Bob) jest programistą od 1970 roku. Jest uznanym mówcą na konferencjach całego świata. Napisał między innymi książki Czysty kod (Helion, 2009), Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C# (Helion, 2008), Mistrz czystego kodu. Kodeks postępowania profesjonalnych programistów (Helion, 2013) oraz UML for Java Programmers (Prentice Hall, 2003). Oprócz tego Martin opublikował setki artykułów, rozpraw i wpisów na blogach. Działał jako redaktor naczelny magazynu „The C++ Report” i był pierwszym przewodniczącym organizacji Agile Alliance. Założył i prowadzi międzynarodową firmę Object Mentor Inc., skupiającą doświadczonych programistów i menedżerów specjalizujących się we wspomaganiu firm w realizacji trudnych projektów.

Spis treści

  • Słowo wstępne
  • Wstęp
    • Podziękowania
      • Rysunki
  • Rozdział 1. Czysty kod
    • Niech stanie się kod...
    • W poszukiwaniu doskonałego kodu...
    • Całkowity koszt bałaganu
      • Rozpoczęcie wielkiej zmiany projektu
      • Postawa
      • Największa zagadka
      • Sztuka czystego kodu?
      • Co to jest czysty kod?
    • Szkoły myślenia
    • Jesteśmy autorami
    • Zasada skautów
    • Poprzednik i zasady
    • Zakończenie
    • Bibliografia
  • Rozdział 2. Znaczące nazwy
    • Wstęp
    • Używaj nazw przedstawiających intencje
    • Unikanie dezinformacji
    • Tworzenie wyraźnych różnic
    • Tworzenie nazw, które można wymówić
    • Korzystanie z nazw łatwych do wyszukania
    • Unikanie kodowania
      • Notacja węgierska
      • Przedrostki składników
      • Interfejsy i implementacje
    • Unikanie odwzorowania mentalnego
    • Nazwy klas
    • Nazwy metod
    • Nie bądź dowcipny
    • Wybieraj jedno słowo na pojęcie
    • Nie twórz kalamburów!
    • Korzystanie z nazw dziedziny rozwiązania
    • Korzystanie z nazw dziedziny problemu
    • Dodanie znaczącego kontekstu
    • Nie należy dodawać nadmiarowego kontekstu
    • Słowo końcowe
  • Rozdział 3. Funkcje
    • Małe funkcje!
      • Bloki i wcięcia
    • Wykonuj jedną czynność
      • Sekcje wewnątrz funkcji
    • Jeden poziom abstrakcji w funkcji
      • Czytanie kodu od góry do dołu zasada zstępująca
    • Instrukcje switch
    • Korzystanie z nazw opisowych
    • Argumenty funkcji
      • Często stosowane funkcje jednoargumentowe
      • Argumenty znacznikowe
      • Funkcje dwuargumentowe
      • Funkcje trzyargumentowe
      • Argumenty obiektowe
      • Listy argumentów
      • Czasowniki i słowa kluczowe
    • Unikanie efektów ubocznych
      • Argumenty wyjściowe
    • Rozdzielanie poleceń i zapytań
    • Stosowanie wyjątków zamiast zwracania kodów błędów
      • Wyodrębnienie bloków try-catch
      • Obsługa błędów jest jedną operacją
      • Przyciąganie zależności w Error.java
    • Nie powtarzaj się[13]
    • Programowanie strukturalne
    • Jak pisać takie funkcje?
    • Zakończenie
    • SetupTeardownIncluder
    • Bibliografia
  • Rozdział 4. Komentarze
    • Komentarze nie są szminką dla złego kodu
    • Czytelny kod nie wymaga komentarzy
    • Dobre komentarze
      • Komentarze prawne
      • Komentarze informacyjne
      • Wyjaśnianie zamierzeń
      • Wyjaśnianie
      • Ostrzeżenia o konsekwencjach
      • Komentarze TODO
      • Wzmocnienie
      • Komentarze Javadoc w publicznym API
    • Złe komentarze
      • Bełkot
      • Powtarzające się komentarze
      • Mylące komentarze
      • Komentarze wymagane
      • Komentarze dziennika
      • Komentarze wprowadzające szum informacyjny
      • Przerażający szum
      • Nie używaj komentarzy, jeżeli można użyć funkcji lub zmiennej
      • Znaczniki pozycji
      • Komentarze w klamrach zamykających
      • Atrybuty i dopiski
      • Zakomentowany kod
      • Komentarze HTML
      • Informacje nielokalne
      • Nadmiar informacji
      • Nieoczywiste połączenia
      • Nagłówki funkcji
      • Komentarze Javadoc w niepublicznym kodzie
      • Przykład
    • Bibliografia
  • Rozdział 5. Formatowanie
    • Przeznaczenie formatowania
    • Formatowanie pionowe
      • Metafora gazety
      • Pionowe odstępy pomiędzy segmentami kodu
      • Gęstość pionowa
      • Odległość pionowa
      • Uporządkowanie pionowe
    • Formatowanie poziome
      • Poziome odstępy i gęstość
      • Rozmieszczenie poziome
      • Wcięcia
      • Puste zakresy
    • Zasady zespołowe
    • Zasady formatowania wujka Boba
  • Rozdział 6. Obiekty i struktury danych
    • Abstrakcja danych
    • Antysymetria danych i obiektów
    • Prawo Demeter
      • Wraki pociągów
      • Hybrydy
      • Ukrywanie struktury
    • Obiekty transferu danych
      • Active Record
    • Zakończenie
    • Bibliografia
  • Rozdział 7. Obsługa błędów
    • Użycie wyjątków zamiast kodów powrotu
    • Rozpoczynanie od pisania instrukcji try-catch-finally
    • Użycie niekontrolowanych wyjątków
    • Dostarczanie kontekstu za pomocą wyjątków
    • Definiowanie klas wyjątków w zależności od potrzeb wywołującego
    • Definiowanie normalnego przepływu
    • Nie zwracamy null
    • Nie przekazujemy null
    • Zakończenie
    • Bibliografia
  • Rozdział 8. Granice
    • Zastosowanie kodu innych firm
    • Przeglądanie i zapoznawanie się z granicami
    • Korzystanie z pakietu log4j
    • Zalety testów uczących
    • Korzystanie z nieistniejącego kodu
    • Czyste granice
    • Bibliografia
  • Rozdział 9. Testy jednostkowe
    • Trzy prawa TDD
    • Zachowanie czystości testów
      • Testy zwiększają możliwości
    • Czyste testy
      • Języki testowania specyficzne dla domeny
      • Podwójny standard
    • Jedna asercja na test
      • Jedna koncepcja na test
    • F.I.R.S.T.[8]
    • Zakończenie
    • Bibliografia
  • Rozdział 10. Klasy
    • Organizacja klas
      • Hermetyzacja
    • Klasy powinny być małe!
      • Zasada pojedynczej odpowiedzialności
      • Spójność
      • Utrzymywanie spójności powoduje powstanie wielu małych klas
    • Organizowanie zmian
      • Izolowanie modułów kodu przed zmianami
    • Bibliografia
  • Rozdział 11. Systemy
    • Jak budowałbyś miasto?
    • Oddzielenie konstruowania systemu od jego używania
      • Wydzielenie modułu main
      • Fabryki
      • Wstrzykiwanie zależności
    • Skalowanie w górę
      • Separowanie (rozcięcie) problemów
    • Pośredniki Java
    • Czyste biblioteki Java AOP
    • Aspekty w AspectJ
    • Testowanie architektury systemu
    • Optymalizacja podejmowania decyzji
      • Korzystaj ze standardów, gdy wnoszą realną wartość
    • Systemy wymagają języków dziedzinowych
    • Zakończenie
    • Bibliografia
  • Rozdział 12. Powstawanie projektu
    • Uzyskiwanie czystości projektu przez jego rozwijanie
    • Zasada numer 1 prostego projektu system przechodzi wszystkie testy
    • Zasady numer 2 4 prostego projektu przebudowa
    • Brak powtórzeń
    • Wyrazistość kodu
    • Minimalne klasy i metody
    • Zakończenie
    • Bibliografia
  • Rozdział 13. Współbieżność
    • W jakim celu stosować współbieżność?
      • Mity i nieporozumienia
    • Wyzwania
    • Zasady obrony współbieżności
      • Zasada pojedynczej odpowiedzialności
      • Wniosek ograniczenie zakresu danych
      • Wniosek korzystanie z kopii danych
      • Wniosek wątki powinny być na tyle niezależne, na ile to tylko możliwe
    • Poznaj używaną bibliotekę
      • Kolekcje bezpieczne dla wątków
    • Poznaj modele wykonania
      • Producent-konsument[9]
      • Czytelnik-pisarz[10]
      • Ucztujący filozofowie[11]
    • Uwaga na zależności pomiędzy synchronizowanymi metodami
    • Tworzenie małych sekcji synchronizowanych
    • Pisanie prawidłowego kodu wyłączającego jest trudne
    • Testowanie kodu wątków
      • Traktujemy przypadkowe awarie jako potencjalne problemy z wielowątkowością
      • Na początku uruchamiamy kod niekorzystający z wątków
      • Nasz kod wątków powinien dać się włączać
      • Nasz kod wątków powinien dać się dostrajać
      • Uruchamiamy więcej wątków, niż mamy do dyspozycji procesorów
      • Uruchamiamy testy na różnych platformach
      • Uzbrajamy nasz kod w elementy próbujące wywołać awarie i wymuszające awarie
      • Instrumentacja ręczna
      • Instrumentacja automatyczna
    • Zakończenie
    • Bibliografia
  • Rozdział 14. Udane oczyszczanie kodu
    • Implementacja klasy Args
      • Jak to napisałem?
    • Args zgrubny szkic
      • Zatrzymałem się
      • O przyrostowości
    • Argumenty typu String
    • Zakończenie
  • Rozdział 15. Struktura biblioteki JUnit
    • Biblioteka JUnit
    • Zakończenie
  • Rozdział 16. Przebudowa klasy SerialDate
    • Na początek uruchamiamy
    • Teraz poprawiamy
    • Zakończenie
    • Bibliografia
  • Rozdział 17. Zapachy kodu i heurystyki
    • Komentarze
      • C1. Niewłaściwe informacje
      • C2. Przestarzałe komentarze
      • C3. Nadmiarowe komentarze
      • C4. Źle napisane komentarze
      • C5. Zakomentowany kod
    • Środowisko
      • E1. Budowanie wymaga więcej niż jednego kroku
      • E2. Testy wymagają więcej niż jednego kroku
    • Funkcje
      • F1. Nadmiar argumentów
      • F2. Argumenty wyjściowe
      • F3. Argumenty znacznikowe
      • F4. Martwe funkcje
    • Ogólne
      • G1. Wiele języków w jednym pliku źródłowym
      • G2. Oczywiste działanie jest nieimplementowane
      • G3. Niewłaściwe działanie w warunkach granicznych
      • G4. Zdjęte zabezpieczenia
      • G5. Powtórzenia
      • G6. Kod na nieodpowiednim poziomie abstrakcji
      • G7. Klasy bazowe zależne od swoich klas pochodnych
      • G8. Za dużo informacji
      • G9. Martwy kod
      • G10. Separacja pionowa
      • G11. Niespójność
      • G12. Zaciemnianie
      • G13. Sztuczne sprzężenia
      • G14. Zazdrość o funkcje
      • G15. Argumenty wybierające
      • G16. Zaciemnianie intencji
      • G17. Źle rozmieszczona odpowiedzialność
      • G18. Niewłaściwe metody statyczne
      • G19. Użycie opisowych zmiennych
      • G20. Nazwy funkcji powinny informować o tym, co realizują
      • G21. Zrozumienie algorytmu
      • G22. Zamiana zależności logicznych na fizyczne
      • G23. Zastosowanie polimorfizmu zamiast instrukcji if-else lub switch-case
      • G24. Wykorzystanie standardowych konwencji
      • G25. Zamiana magicznych liczb na stałe nazwane
      • G26. Precyzja
      • G27. Struktura przed konwencją
      • G28. Hermetyzacja warunków
      • G29. Unikanie warunków negatywnych
      • G30. Funkcje powinny wykonywać jedną operację
      • G31. Ukryte sprzężenia czasowe
      • G32. Unikanie dowolnych działań
      • G33. Hermetyzacja warunków granicznych
      • G34. Funkcje powinny zagłębiać się na jeden poziom abstrakcji
      • G35. Przechowywanie danych konfigurowalnych na wysokim poziomie
      • G36. Unikanie nawigacji przechodnich
    • Java
      • J1. Unikanie długich list importu przez użycie znaków wieloznacznych
      • J2. Nie dziedziczymy stałych
      • J3. Stałe kontra typy wyliczeniowe
    • Nazwy
      • N1. Wybór opisowych nazw
      • N2. Wybór nazw na odpowiednich poziomach abstrakcji
      • N3. Korzystanie ze standardowej nomenklatury tam, gdzie jest to możliwe
      • N4. Jednoznaczne nazwy
      • N5. Użycie długich nazw dla długich zakresów
      • N6. Unikanie kodowania
      • N7. Nazwy powinny opisywać efekty uboczne
    • Testy
      • T1. Niewystarczające testy
      • T2. Użycie narzędzi kontroli pokrycia
      • T3. Nie pomijaj prostych testów
      • T4. Ignorowany test jest wskazaniem niejednoznaczności
      • T5. Warunki graniczne
      • T6. Dokładne testowanie pobliskich błędów
      • T7. Wzorce błędów wiele ujawniają
      • T8. Wzorce pokrycia testami wiele ujawniają
      • T9. Testy powinny być szybkie
    • Zakończenie
    • Bibliografia
  • Dodatek A: Współbieżność II
    • Przykład klient-serwer
      • Serwer
      • Dodajemy wątki
      • Uwagi na temat serwera
      • Zakończenie
    • Możliwe ścieżki wykonania
      • Liczba ścieżek
        • Wyliczanie możliwych uporządkowań
      • Kopiemy głębiej
      • Zakończenie
    • Poznaj używaną bibliotekę
      • Biblioteka Executor
      • Rozwiązania nieblokujące
      • Bezpieczne klasy nieobsługujące wątków
    • Zależności między metodami mogą uszkodzić kod współbieżny
      • Tolerowanie awarii
      • Blokowanie na kliencie
      • Blokowanie na serwerze
    • Zwiększanie przepustowości
      • Obliczenie przepustowości jednowątkowej
      • Obliczenie przepustowości wielowątkowej
    • Zakleszczenie
      • Wzajemne wykluczanie
      • Blokowanie i oczekiwanie
      • Brak wywłaszczania
      • Cykliczne oczekiwanie
      • Zapobieganie wzajemnemu wykluczaniu
      • Zapobieganie blokowaniu i oczekiwaniu
      • Umożliwienie wywłaszczania
      • Zapobieganie oczekiwaniu cyklicznemu
    • Testowanie kodu wielowątkowego
    • Narzędzia wspierające testowanie kodu korzystającego z wątków
    • Zakończenie
    • Samouczek. Pełny kod przykładów
      • Klient-serwer bez wątków
      • Klient-serwer z użyciem wątków
  • Dodatek B: org.jfree.date.SerialDate
  • Epilog
Marka
Autor
Robert C. Martin
ISBN
9788328302341
Potrzebujesz pomocy? Masz pytania?Zadaj pytanie a my odpowiemy niezwłocznie, najciekawsze pytania i odpowiedzi publikując dla innych.
Zapytaj o produkt
Jeżeli powyższy opis jest dla Ciebie niewystarczający, prześlij nam swoje pytanie odnośnie tego produktu. Postaramy się odpowiedzieć tak szybko jak tylko będzie to możliwe. Dane są przetwarzane zgodnie z polityką prywatności. Przesyłając je, akceptujesz jej postanowienia.
Napisz swoją opinię
Twoja ocena:
5/5
Dodaj własne zdjęcie produktu:
pixel