Чистый код. Руководство хорошего программиста

Товар

2 758  ₽
Чистый код. Руководство хорошего программиста

Доставка

  • Почта России

    1296 ₽

  • Курьерская доставка EMS

    1622 ₽

Характеристики

Артикул
15341758658
Состояние
Новый
Język publikacji
polski
Waga produktu z opakowaniem jednostkowym
0.3 kg
Okładka
miękka
Nośnik
książka papierowa
Rok wydania
2022
Tytuł
Czysty kod. Podręcznik dobrego programisty
Autor
Robert C. Martin
Wydawnictwo
Helion
Liczba stron
424
Numer wydania
1
Seria
inna (Helion Gliwice)
Szerokość produktu
16.8 cm
Wysokość produktu
18 cm

Описание

Czysty kod. Podręcznik dobrego programisty

Stron: 444

Format: 16,5 x 23,4 cm

Rok wydania: 2010

Oprawa:miękka

Czysty kod. Podręcznik dobrego programisty

Robert C. Martin

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

Гарантии

  • Гарантии

    Мы работаем по договору оферты и предоставляем все необходимые документы.

  • Лёгкий возврат

    Если товар не подошёл или не соответсвует описанию, мы поможем вернуть его.

  • Безопасная оплата

    Банковской картой, электронными деньгами, наличными в офисе или на расчётный счёт.

Отзывы о товаре

Рейтинг товара 4.96 / 5

623 отзыва

Russian English Polish