Szczegóły ebooka

Mistrz języka C. Najlepsze zasady, praktyki i wzorce

Mistrz języka C. Najlepsze zasady, praktyki i wzorce

Christopher Preschern

Ebook

Język C mimo upływu lat wciąż wydaje się niezastąpiony. Umożliwia pisanie zwięzłego kodu, który działa szybko mimo niewielkich zasobów sprzętowych. Choć wielu programistów używa C, trudno jest znaleźć eksperckie wskazówki dotyczące programowania w tym języku. Tymczasem w profesjonalnych zastosowaniach podjęcie optymalnych decyzji projektowych warunkuje uzyskanie wysokiej jakości gotowego kodu.

To świetna pozycja, dzięki której Twój kod będzie bardziej przejrzysty i łatwiejszy w konserwacji.

David Griffiths, autor książki Head First C

W tym poradniku, skierowanym do początkujących i doświadczonych programistów języka C, zawarto wiele informacji o podejmowaniu decyzji projektowych, pokazano też krok po kroku, jak wpływają one na tworzenie złożonego oprogramowania. Znajdziesz tu odpowiedzi na trudne pytania o projektowanie struktury programów w C, obsługę błędów czy tworzenie elastycznych interfejsów. Liczne wskazówki i przykłady ułatwią Ci przekładanie wiedzy projektowej na działające implementacje. Druga część książki stanowi omówienie zastosowania licznych wzorców projektowych z języka C do tworzenia większych aplikacji. Dowiesz się, jakie wzorce stosuje się w konkretnych sytuacjach, a także w jaki sposób mogą ułatwić Ci pracę dzięki wskazywaniu dobrych decyzji projektowych.

W książce omówiono wzorce dotyczące:

  • obsługi błędów i komunikatów o błędach
  • zarządzania pamięcią
  • elastycznych API i interfejsów iteratorów
  • organizowania plików w programach modułowych
  • ucieczki z piekła instrukcji #ifdef

Ta książka pokaże początkującym, jak tworzyć w C produkty klasy przemysłowej!

Robert Hanmer, architekt oprogramowania

Przedmowa

Część I. Wzorce w języku C

  • 1. Obsługa błędów
    • Przykład roboczy
    • Podział funkcji
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Klauzula zabezpieczająca
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Reguła samuraja
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Obsługa błędów z użyciem instrukcji goto
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Zapisywanie informacji o porządkowaniu
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Obiektowa obsługa błędów
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Podsumowanie
    • Dalsza lektura
    • Co dalej?
  • 2. Zwracanie informacji o błędach
    • Przykład roboczy
    • Zwracanie kodów stanu
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Zwracanie adekwatnych informacji o błędach
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Specjalne zwracane wartości
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Rejestrowanie błędów
      • Kontekst
      • Problem
      • Rozwiązanie
      • Makra wielowierszowe
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Podsumowanie
    • Dalsza lektura
    • Co dalej?
  • 3. Zarządzanie pamięcią
    • Przechowywanie danych i problemy z pamięcią dynamiczną
    • Przykład roboczy
    • Zacznij od stosu
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Pamięć wieczna
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Leniwe porządkowanie
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Określony właściciel
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Nakładka do alokacji pamięci
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Sprawdzanie wskaźników
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Pula pamięci
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Podsumowanie
    • Dalsza lektura
    • Co dalej?
  • 4. Zwracanie danych z funkcji w C
    • Przykład roboczy
    • Zwracana wartość
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Parametry wyjściowe
      • Kontekst
      • Problem
      • Rozwiązanie
      • Środowiska wielowątkowe
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Zagregowana instancja
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Niemodyfikowalna instancja
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Bufor należący do jednostki wywołującej
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Alokacja w jednostce wywoływanej
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Podsumowanie
    • Co dalej?
  • 5. Czas życia i własność danych
    • Bezstanowy moduł oprogramowania
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Moduł oprogramowania ze stanem globalnym
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Instancja należąca do jednostki wywołującej
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Współdzielona instancja
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Podsumowanie
    • Dalsza lektura
    • Co dalej?
  • 6. Elastyczne API
    • Pliki nagłówkowe
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Uchwyt
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Dynamiczny interfejs
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Kontrolowanie funkcji
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Podsumowanie
    • Dalsza lektura
    • Co dalej?
  • 7. Elastyczne interfejsy iteratorów
    • Przykład roboczy
    • Dostęp za pomocą indeksu
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Iterator w postaci kursora
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Iterator z wywołaniami zwrotnymi
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Podsumowanie
    • Dalsza lektura
    • Co dalej?
  • 8. Organizowanie plików w modułowych programach
    • Przykład roboczy
    • Zabezpieczanie instrukcji include
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Katalogi modułów oprogramowania
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Globalny katalog na dołączane pliki
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Samodzielny komponent
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Kopiowanie API
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Podsumowanie
    • Co dalej?
  • 9. Ucieczka z piekła instrukcji #ifdef
    • Przykład roboczy
    • Unikanie wariantów
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Izolowane podstawowe jednostki kodu
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Atomowe podstawowe jednostki kodu
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Warstwa abstrakcji
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Rozdzielanie implementacji wariantów
      • Kontekst
      • Problem
      • Rozwiązanie
      • Skutki
      • Znane zastosowania
      • Zastosowanie w przykładzie roboczym
    • Podsumowanie
    • Dalsza lektura
    • Co dalej?

Część II. Historie dotyczące wzorców

  • 10. Implementowanie mechanizmu rejestrowania informacji
    • Historia wykorzystana do prezentowania wzorców
      • Organizowanie plików
      • Centralna funkcja rejestrowania informacji
      • Filtr źródła rejestrowanych informacji
      • Warunkowe rejestrowanie informacji
      • Rejestrowanie informacji w różnych miejscach
      • Rejestrowanie informacji w pliku
      • Pliki działające na różnych platformach
      • Stosowanie mechanizmu rejestrowania informacji
    • Podsumowanie
  • 11. Tworzenie systemu zarządzania kontami użytkowników
    • Historia wykorzystana do prezentowania wzorców
      • Organizowanie danych
      • Organizowanie plików
      • Obsługa błędów w procesie uwierzytelniania
      • Rejestrowanie błędów w procesie uwierzytelniania
      • Obsługa błędów w procesie dodawania użytkowników
      • Iterowanie
      • Korzystanie z systemu zarządzania kontami użytkowników
    • Podsumowanie
  • 12. Zakończenie
    • Czego się nauczyłeś?
    • Dalsza lektura
    • Uwagi końcowe
  • Tytuł: Mistrz języka C. Najlepsze zasady, praktyki i wzorce
  • Autor: Christopher Preschern
  • Tytuł oryginału: Fluent C: Principles, Practices, and Patterns
  • Tłumaczenie: Tomasz Walczak
  • ISBN: 978-83-8322-723-8, 9788383227238
  • Data wydania: 2023-06-27
  • Format: Ebook
  • Identyfikator pozycji: misjec
  • Wydawca: Helion