E-book details

Rzemiosło w czystej formie. Standardy i etyka rzetelnych programistów

Rzemiosło w czystej formie. Standardy i etyka rzetelnych programistów

Robert C. Martin

Ebook

Rzemieślnik to osoba, która jest starannie wyszkolona, doskonale zna się na swoim fachu i czuje dumę z własnej pracy. Zawsze zachowuje właściwą dla zawodu godność i profesjonalizm. Społeczeństwo okazuje zaufanie rzemieślnikom, wierząc, że należycie dbają o wysoką jakość i postępują etycznie. Pisanie oprogramowania to też rzemiosło. I programiści, podobnie jak inni rzemieślnicy, również chcą czuć dumę i satysfakcję ze swojej pracy. Problem w tym, że świat zdaje się dziś wymagać od nich przede wszystkim produktywności, a nie wysokiej jakości kodu.

W tej książce znajdziesz zasady definiujące rzemiosło, jakim jest wytwarzanie oprogramowania. Zebrano w niej procedury, standardy i normy etyczne, dzięki którym tworzony kod będzie niezawodny i efektywny, a całe oprogramowanie stanie się powodem do dumy. Zawarto tutaj szereg pragmatycznych wskazówek dotyczących procedur programistycznego rzemiosła. Omówiono też standardy, co powinno ułatwić zrozumienie oczekiwań wobec programistów. Ważnym zagadnieniem jest etyczny kontekst zawodu programisty, czyli fundamentalne zobowiązania, które programiści powinni podjąć względem swojego otoczenia i siebie samych. Istotą rzemiosła programistycznego bowiem jest tworzenie kodu, który budzi zaufanie użytkowników i całych społeczności.

Najciekawsze zagadnienia:

  • czym jest prawdziwe rzemiosło programistyczne
  • pięć podstaw: programowanie sterowane testami, refaktoryzacja, prostota projektu, programowanie zespołowe i testy akceptacyjne
  • produktywność, jakość i odwaga w zespołach programistów
  • czym w rzeczywistości jest uczciwość i praca zespołowa
  • dziesięć zobowiązań profesjonalnego programisty

Szczyć się swoją pracą i utrzymuj wysoki standard!

Przedmowa

Wstęp

Podziękowania

O autorze

Rozdział 1. Rzemiosło

CZĘŚĆ I. Procedury

  • Programowanie ekstremalne
    • Krąg rozwoju
  • Programowanie sterowane testami
  • Refaktoryzacja
  • Prostota projektu
  • Programowanie zespołowe
  • Testy akceptacyjne

Rozdział 2. Programowanie sterowane testami

  • Ogólny zarys
    • Oprogramowanie
    • Trzy prawa TDD
    • Czwarte prawo
  • Podstawy
    • Proste przykłady
    • Stos
    • Czynniki pierwsze
    • Gra w kręgle
  • Zakończenie

Rozdział 3. Zaawansowane techniki TDD

  • Sortowanie - podejście 1.
  • Sortowanie - podejście 2.
  • Utknięcie
  • Przygotuj, działaj, sprawdź
    • Wprowadzenie do BDD
    • Automaty skończone
    • Znowu o BDD
  • Dublery testowe
    • Atrapa
    • Zaślepka
    • Szpieg
    • Imitacja
    • Podróbka
    • Zasada niepewności metodyki TDD
    • Londyn kontra Chicago
    • Problem pewności
    • Londyn
    • Chicago
    • Synteza
  • Architektura
  • Zakończenie

Rozdział 4. Projektowanie testów

  • Testowanie baz danych
  • Testowanie interfejsów GUI
    • Dane wprowadzane z interfejsu GUI
  • Wzorce testowe
    • Podklasa specyficzna dla testów
    • Samopodstawienie
    • Skromny obiekt
  • Projektowanie testów
    • Problem kruchych testów
    • Zgodność jeden do jednego
    • Zrywanie zgodności
    • Wypożyczalnia filmów
    • Szczegółowość kontra ogólność
  • Domniemane pierwszeństwo przekształceń (Transformation Priority Premise)
    • {} -> Nil
    • Nil -> stała
    • Stała -> zmienna
    • Bezwarunkowość -> wybór
    • Wartość -> lista
    • Instrukcja -> rekurencja
    • Wybór -> iteracja
    • Wartość -> zmieniona wartość
    • Przykład: Fibonacci
    • Domniemane pierwszeństwo przekształceń
  • Zakończenie

Rozdział 5. Refaktoryzacja

  • Czym jest refaktoryzacja?
  • Podstawowy zestaw narzędziowy
    • Zmiana nazwy
    • Wyodrębnianie metody
    • Wyodrębnianie zmiennej
    • Wyodrębnianie pola
    • Kostka Rubika
  • Procedury
    • Testy
    • Szybkie testy
    • Zerwij z głęboką zgodnością jeden do jednego
    • Stale refaktoryzuj
    • Refaktoryzuj bezwzględnie
    • Niech wyniki testów będą stale pozytywne!
    • Pozostaw sobie wyjście
  • Zakończenie

Rozdział 6. Prostota projektu

  • YAGNI
  • Kod pokryty testami
    • Pokrycie
    • Cel asymptotyczny
    • Projekt?
    • To jednak nie wszystko
  • Zwiększenie wyrazistości
    • Bazowa abstrakcja
    • Testy: druga część problemu
  • Ograniczenie duplikacji
    • Przypadkowa duplikacja
  • Zmniejszanie
    • Prosta konstrukcja

Rozdział 7. Programowanie zespołowe

Rozdział 8. Testy akceptacyjne

  • Procedura
  • Ciągła budowa

CZĘŚĆ II. Standardy

  • Twój nowy dyrektor techniczny

Rozdział 9. Produktywność

  • Nie będziemy nigdy wciskać badziewia
  • Możliwość niedrogiej adaptacji
  • Będziemy zawsze gotowi
  • Stabilna wydajność

Rozdział 10. Jakość

  • Ciągłe ulepszanie
  • Odważna fachowość
  • Wyjątkowa jakość
  • Nie będziemy zrzucali pracy na dział zapewniania jakości
    • Przypadłość działu zapewniania jakości
  • Dział zapewniania jakości niczego nie znajdzie
  • Automatyzacja testów
  • Testowanie automatyczne a interfejsy użytkownika
  • Testowanie interfejsu użytkownika

Rozdział 11. Odwaga

  • Zastępujemy się nawzajem
  • Rzetelne oszacowania
  • Musisz mówić "NIE"
  • Ciągłe aktywne uczenie się
  • Mentorowanie

CZĘŚĆ III. Etyka

  • Pierwszy programista
  • Siedemdziesiąt pięć lat
  • Ofermy i wyzwoliciele
  • Wzory osobowe i czarne charaktery
  • Rządzimy światem
  • Katastrofy
  • Przysięga

Rozdział 12. Szkody

  • Po pierwsze, nie szkodzić
    • Nie szkodzić społeczeństwu
    • Uszczerbek w funkcjonowaniu
    • Nieszkodzenie strukturze
    • Elastyczność
    • Testy
  • Najlepsza praca
    • Jak zrobić to dobrze
    • Czym jest dobra struktura?
    • Macierz Eisenhowera
    • Programiści są interesariuszami
    • Dokładanie wszelkich starań
  • Powtarzalny dowód
    • Dijkstra
    • Udowadnianie poprawności
    • Programowanie strukturalne
    • Dekompozycja funkcyjna
    • Programowanie sterowane testami

Rozdział 13. Integralność

  • Krótkie cykle
    • Historia kontroli kodu źródłowego
    • Git
    • Krótkie cykle
    • Ciągła integracja
    • Gałęzie kontra przełączniki
    • Ciągłe wdrażanie
    • Ciągła budowa
  • Bezwzględne ulepszanie
    • Pokrycie testami
    • Testowanie mutacyjne
    • Stabilność semantyczna
    • Oczyszczanie
    • Wytwory
  • Utrzymywanie wysokiej wydajności
    • Lepkość
    • Radzenie sobie z rozproszeniami
    • Zarządzanie czasem

Rozdział 14. Praca zespołowa

  • Praca w zespole
    • Otwarte/wirtualne biuro
  • Rzetelne i uczciwe oszacowania
    • Kłamstwa
    • Uczciwość, dokładność, precyzja
    • Historia nr 1: wektory
    • Historia nr 2: pCCU
    • Nauczka
    • Dokładność
    • Precyzja
    • Łączenie
    • Uczciwość
  • Szacunek
  • Nigdy nie przestawaj się uczyć
  • Title: Rzemiosło w czystej formie. Standardy i etyka rzetelnych programistów
  • Author: Robert C. Martin
  • Original title: Clean Craftsmanship: Disciplines, Standards, and Ethics (Robert C. Martin Series)
  • Translation: Krzysztof Bąbol
  • ISBN: 978-83-283-9057-7, 9788328390577
  • Date of issue: 2022-09-20
  • Format: Ebook
  • Item ID: rzemcz
  • Publisher: Helion