Refaktoryzacja w C#. Jak zredukowa - Helion
ebook
Autor: Matt ElandTytuł oryginału: Refactoring with C#: Safely improve .NET applications and pay down technical debt with Visual Studio, .NET 8, and C# 12
ISBN: 978-83-289-1692-0
stron: 408, Format: ebook
Data wydania: 2024-12-01
Księgarnia: Helion
Cena książki: 64,35 zł (poprzednio: 99,00 zł)
Oszczędzasz: 35% (-34,65 zł)
Nakład wyczerpany
Termin d
Zobacz także:
- ASP .NET Core. Kurs video. Rozwijanie dodatkowych funkcjonalności Web API 89,00 zł, (26,70 zł -70%)
- ASP.NET Core. Kurs video. Tworzenie REST Web API 49,00 zł, (14,70 zł -70%)
- Gray Hat C#. Język C# w kontroli i łamaniu zabezpieczeń 57,74 zł, (17,90 zł -69%)
- ASP.NET Core 6. Kurs video. Rozwijaj aplikacje webowe z Entity Framework Core 178,97 zł, (62,64 zł -65%)
- PowerShell. Kurs video. Zarz 164,31 zł, (59,15 zł -64%)
Spis treści
Refaktoryzacja w C#. Jak zredukować dług techniczny i optymalizować kod z Visual Studio, .NET 8 i C# 12 eBook -- spis treści
O autorze
O recenzentach
Przedmowa
Wstęp
CZĘŚĆ 1. Refaktoryzacja w C# w Visual Studio
- Rozdział 1. Dług techniczny, zapaszki kodu i refaktoryzacja
- Dług techniczny i stary kod
- Skąd się bierze dług techniczny
- Identyfikacja zapaszków kodu
- Wprowadzenie do refaktoryzacji
- Narzędzia do refaktoryzacji w Visual Studio
- Studium przypadku - linie lotnicze Cloudy Skies
- Podsumowanie
- Pytania
- Dalsza lektura
- Dług techniczny i stary kod
- Rozdział 2. Wprowadzenie do refaktoryzacji
- Wymagania techniczne
- Refaktoryzacja kalkulatora cen bagażu
- Konwersja własności na własności automatyczne
- Wprowadzanie zmiennych lokalnych
- Wprowadzanie stałych
- Wprowadzanie parametrów
- Usuwanie nieużywanego i nieosiągalnego kodu
- Wyodrębnianie metod
- Ręczna refaktoryzacja
- Testowanie kodu po refaktoryzacji
- Refaktoryzacja w innych edytorach
- Refaktoryzacja w Visual Studio Code z dodatkiem C# Dev Kit
- Refaktoryzacja w środowisku JetBrains Rider
- Refaktoryzacja w Visual Studio z dodatkiem ReSharper
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 3. Refaktoryzacja przepływu sterowania i iteracji
- Wymagania techniczne
- Refaktoryzacja aplikacji do obsługi przyjmowania na pokład
- Kontrola przepływu sterowania
- Odwracanie instrukcji if
- Opuszczanie instrukcji else po instrukcjach return
- Restrukturyzacja instrukcji if
- Operator trójargumentowy
- Zamiana instrukcji if na instrukcje switch
- Konwersja na wyrażenia switch
- Tworzenie obiektów
- Zamiana var na konkretne określenia typów
- Prostsze tworzenie przy użyciu słowa kluczowego new z określeniem typu docelowego
- Inicjalizatory obiektów
- Iterowanie kolekcji
- Pętla foreach
- Konwersja na pętlę for
- Konwersja na LINQ
- Refaktoryzacja instrukcji LINQ
- Wybór odpowiedniej metody LINQ
- Łączenie metod LINQ
- Przekształcanie przy użyciu metody Select
- Przegląd i testowanie kodu po refaktoryzacji
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 4. Refaktoryzacja na poziomie metod
- Wymagania techniczne
- Refaktoryzacja rejestratora lotów
- Refaktoryzacja metod
- Zmiana modyfikatorów dostępu do metod
- Zmienianie nazw metod i parametrów
- Przeciążanie metod
- Łańcuchy wywołań metod
- Refaktoryzacja konstruktorów
- Generowanie konstruktorów
- Łańcuchy konstruktorów
- Refaktoryzacja parametrów
- Zmiana kolejności parametrów
- Dodawanie parametrów
- Wprowadzanie parametrów opcjonalnych
- Usuwanie parametrów
- Refaktoryzacja do funkcji
- Składowe z wyrażeniem w treści
- Przekazywanie funkcji jako parametrów z akcjami
- Zwracanie danych z akcji przy użyciu struktur typu Func
- Wprowadzanie metod statycznych i rozszerzających
- Tworzenie statycznych metod
- Przenoszenie statycznych składowych do innych typów
- Tworzenie metod rozszerzających
- Przegląd i testowanie kodu po refaktoryzacji
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 5. Refaktoryzacja kodu obiektowego
- Wymagania techniczne
- Refaktoryzacja systemu wyszukiwania lotów
- Organizowanie klas przez refaktoryzację
- Przenoszenie klas do osobnych plików
- Zmienianie nazw plików i klas
- Zmiana przestrzeni nazw
- Unikanie klas częściowych i regionów
- Refaktoryzacja i dziedziczenie
- Przesłanianie metody ToString
- Generowanie metod równości
- Wyodrębnianie klasy bazowej
- Przenoszenie implementacji interfejsów w górę drzewa dziedziczenia
- Kontrolowanie dziedziczenia za pomocą słowa kluczowego abstract
- Wyrażanie intencji za pomocą słowa kluczowego abstract
- Wprowadzanie składowych abstrakcyjnych
- Konwersja metod abstrakcyjnych na wirtualne
- Poprawianie hermetyzacji
- Hermetyzacja pól
- Pakowanie parametrów do klasy
- Opakowywanie własności w klasy
- Kompozycja zamiast dziedziczenia
- Ulepszanie klas za pomocą interfejsów i polimorfizmu
- Wyodrębnianie interfejsów
- Domyślne implementacje interfejsów
- Wprowadzanie polimorfizmu
- Przegląd i testowanie zrefaktoryzowanego kodu
- Podsumowanie
- Pytania
- Dalsza lektura
CZĘŚĆ 2. Bezpieczna refaktoryzacja
- Rozdział 6. Testy jednostkowe
- Wymagania techniczne
- Testowanie i testy jednostkowe
- Typy testów i piramida testowania
- Testy jednostkowe
- Testowanie kodu przy użyciu xUnit
- Tworzenie projektu testowego xUnit
- Łączenie projektu testów xUnit z własnym projektem
- Pierwszy test jednostkowy
- Wzorzec Organizacja-Akcja-Asercja
- Testy i wyjątki
- Dodawanie kolejnych metod testowych
- Refaktoryzacja testów jednostkowych
- Parametryzacja testów za pomocą atrybutów Theory i InlineData
- Inicjalizacja kodu testów za pomocą konstruktorów i pól
- Współdzielenie kodu przez metody
- Inne środowiska testowe
- Środowisko NUnit
- Środowisko testowe MSTest
- Myślenie w kategoriach testów
- Włączanie testów do codziennego toku pracy
- Izolowanie zależności
- Dobre i złe testy
- Uwagi na temat pokrycia kodu
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 7. Programowanie oparte na testach
- Wymagania techniczne
- Czym jest programowanie oparte na testach
- Programowanie oparte na testach w Visual Studio
- Ustawianie salda początkowego
- Dodawanie kilometrów i generowanie metod
- Wykorzystywanie kilometrów i refaktoryzacja testów
- Kiedy stosować metodykę TDD
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 8. Unikanie antywzorców dzięki zasadom SOLID
- Identyfikacja antywzorców w kodzie C#
- Przestrzeganie zasad SOLID
- Zasada pojedynczej odpowiedzialności
- Zasada otwarty-zamknięty
- Zasada zastępowania Liskov
- Zasada segregacji interfejsów
- Zasada odwrócenia zależności
- Inne zasady architektoniczne
- Zasada DRY
- Zasada KISS
- Wysoka spójność i niski stopień sprzężenia
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 9. Zaawansowane testy jednostkowe
- Wymagania techniczne
- Tworzenie czytelnych testów przy użyciu Shouldly
- Instalowanie pakietu NuGet Shouldly
- Czytelne asercje z Shouldly
- Czytelne asercje z FluentAssertions
- Testowanie wydajności z Shouldly
- Generowanie danych testowych przy użyciu biblioteki Bogus
- Imitowanie zależności za pomocą bibliotek Moq i NSubstitute
- Dlaczego należy korzystać z bibliotek imitacyjnych
- Tworzenie atrap obiektów przy użyciu biblioteki Moq
- Programowanie wartości zwrotnych biblioteki Moq
- Weryfikacja wywołań Moq
- Tworzenie atrap przy użyciu biblioteki NSubstitute
- Testy migawkowe z biblioteką Snapper
- Eksperymentowanie z Scientist .NET
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 10. Defensywne techniki pisania kodu
- Wymagania techniczne
- API Cloudy Skies
- Sprawdzanie poprawności danych wejściowych
- Podstawowa weryfikacja poprawności danych
- Słowo kluczowe nameof
- Weryfikacja przy użyciu klauzul ochronnych
- Klauzule ochronne z biblioteki GuardClauses
- Atrybuty informacyjne
- Ochrona przed null
- Włączanie analizy dopuszczalności wartości null w C#
- Operatory dopuszczalności wartości null
- Poza granicą klas
- Preferowanie klas niezmiennych
- Własności wymagane i tylko do inicjalizacji
- Konstruktory podstawowe
- Konwertowanie klas na rekordy
- Klonowanie obiektów przy użyciu wyrażeń with
- Zaawansowane techniki pracy z typami
- Dopasowywanie wzorców
- Ograniczanie dublowania za pomocą typów generycznych
- Tworzenie aliasów typów za pomocą dyrektywy using
- Podsumowanie
- Pytania
- Dalsza lektura
CZĘŚĆ 3. Zaawansowana refaktoryzacja przy użyciu sztucznej inteligencji i analizy kodu
- Rozdział 11. Refaktoryzacja wspomagana przez sztuczną inteligencję z GitHub Copilot
- Wymagania techniczne
- Wprowadzenie do GitHub Copilot
- Model predykcyjny GitHub
- Rozpoczynanie rozmowy z czatem GitHub Copilot
- Rozpoczynanie pracy z GitHub Copilot w Visual Studio
- Instalowanie i aktywacja rozszerzenia GitHub Copilot
- Uzyskiwanie dostępu do narzędzia GitHub Copilot
- Generowanie sugestii przez GitHub Copilot
- Interakcja z czatem GitHub Copilot
- Refaktoryzacja przy użyciu czatu GitHub Copilot
- Czat GitHub Copilot jako recenzent kodu
- Refaktoryzacja celowana przy użyciu czatu GitHub Copilot
- Tworzenie wstępnej dokumentacji za pomocą czatu GitHub Copilot
- Generowanie imitacji obiektów za pomocą czatu GitHub Copilot
- Ograniczenia narzędzia GitHub Copilot
- Prywatność danych a GitHub Copilot
- Wątpliwości związane z kodem publicznym i narzędziem GitHub Copilot
- Studium przypadku - linie lotnicze Cloudy Skies
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 12. Analiza kodu w Visual Studio
- Wymagania techniczne
- Obliczanie metryk kodu w Visual Studio
- Analiza kodu w Visual Studio
- Analiza rozwiązania przy użyciu domyślnego zestawu reguł
- Konfigurowanie zestawów zasad analizy kodu
- Reagowanie na reguły analizy kodu
- Traktowanie ostrzeżeń jako błędów
- Zaawansowane narzędzia do analizy kodu
- Śledzenie metryk kodu za pomocą SonarCloud i SonarQube
- Dogłębna analiza na platformie .NET za pomocą NDepend
- Studium przypadku linii lotniczych Cloudy Skies
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 13. Tworzenie analizatora Roslyn
- Wymagania techniczne
- Analizatory Roslyn - informacje podstawowe
- Instalowanie narzędzi do tworzenia rozszerzeń i edytora DGML
- Wprowadzenie do wizualizatora składni
- Tworzenie analizatora Roslyn
- Dodawanie projektu analizatora do rozwiązania
- Definiowanie zasady analizy kodu
- Analizowanie symboli przez analizator Roslyn
- Wskazówki na temat pisania analizatorów Roslyn
- Testowanie analizatorów Roslyn za pomocą RoslynTestKit
- Dodawanie projektu testowego analizatora Roslyn
- Klasa AnalyzerTestFixture
- Sprawdzanie, czy analizator Roslyn nie oznacza poprawnego kodu
- Sprawdzanie, czy analizator Roslyn znajduje niepoprawny kod
- Debugowanie analizatorów Analyzers
- Udostępnianie analizatorów jako rozszerzeń do Visual Studio
- Tworzenie rozszerzenia Visual Studio (VSIX) dla analizatora Roslyn
- Podsumowanie
- Pytania
- Dalsza lektura
- Rozdział 14. Refaktoryzacja kodu z analizatorami Roslyn
- Wymagania techniczne
- Studium przypadku - linie lotnicze Cloudy Skies
- Budowa poprawki kodu analizatora Roslyn
- Tworzenie dostawcy poprawki kodu
- Rejestrowanie poprawki kodu
- Modyfikowanie dokumentu przez poprawkę kodu
- Testowanie poprawek kodu za pomocą RoslynTestKit
- Publikowanie analizatorów Roslyn jako pakietów NuGet
- Wdrażanie za pomocą pakietów NuGet
- Tworzenie pakietu NuGet
- Wdrażanie pakietu NuGet
- Dodawanie pakietu NuGet
- Pakowanie dostawcy poprawki kodu jako rozszerzenia
- Podsumowanie
- Pytania
- Dalsza lektura
CZĘŚĆ 4. Refaktoryzacja w firmie
- Rozdział 15. Informowanie o długu technicznym
- Pokonywanie barier w refaktoryzacji
- Pilne terminy
- "Nie ruszać kodu wysokiego ryzyka"
- "Ten kod zniknie, nie marnuj na niego czasu"
- Aplikacje kończące cykl życia
- "Zrób tylko to, co jest wymagane"
- "Refaktoryzacja nie daje wartości biznesowej"
- Informowanie o długu technicznym
- Dług techniczny jako ryzyko
- Tworzenie rejestru ryzyka
- Co zamiast rejestru ryzyka
- Ustalanie priorytetów długu technicznego
- Obliczanie priorytetów ryzyka za pomocą oceny ryzyka
- Podejście oparte na przeczuciu
- Uzyskiwanie poparcia organizacyjnego
- Przygotowywanie się do rozmowy
- Przewidywanie pytań i zastrzeżeń
- Różne podejścia dla różnych liderów
- Znaczenie komunikacji
- Studium przypadku - linie lotnicze Cloudy Skies
- Podsumowanie
- Pytania
- Dalsza lektura
- Pokonywanie barier w refaktoryzacji
- Rozdział 16. Wdrażanie standardów kodowania
- Wymagania techniczne
- Czym są standardy kodowania
- Znaczenie standardów kodowania
- Jak standardy kodu wpływają na refaktoryzację
- Stosowanie standardów kodowania do istniejącego kodu
- Ustanowienie standardów kodowania
- Zbiorowe standardy kodowania
- Wybór tego, co ważne
- Źródła standardów kodowania
- Ewolucja standardów kodowania
- Włączanie standardów do procesów
- Formatowanie i czyszczenie kodu w Visual Studio
- Formatowanie dokumentów
- Automatyczne formatowanie dokumentów
- Konfigurowanie ustawień stylu kodowania
- Stosowanie standardów kodowania za pomocą plików EditorConfig
- Kod początkowy do przeglądu
- Dodawanie pliku EditorConfig
- Dostosowywanie pliku EditorConfig
- Podsumowanie
- Pytania
- Więcej informacji
- Rozdział 17. Zwinna refaktoryzacja
- Refaktoryzacja w zwinnym środowisku
- Kluczowe elementy zwinnych zespołów
- Czynniki przeszkadzające w refaktoryzacji
- Strategie dające sukces w zwinnej refaktoryzacji
- Zadania poświęcone refaktoryzacji
- Refaktoryzacja kodu, który jest zmieniany
- Sprinty refaktoryzacji
- Urlopy refaktoryzacyjne
- Wykonywanie refaktoryzacji na dużą skalę
- Dlaczego duże refaktoryzacje są trudne
- Pułapka przepisywania
- Lekcje z okrętu Tezeusza
- Aktualizowanie projektów za pomocą .NET Upgrade Assistant
- Refaktoryzacja i wzorzec dusiciela
- Odzyskiwanie sprawności, gdy refaktoryzacja pójdzie źle
- Wpływ nieudanych refaktoryzacji
- Zapewnienie bezpieczeństwa w zwinnych środowiskach
- Wdrażanie refaktoryzacji na dużą skalę
- Korzystanie z flag funkcji
- Wdrożenia etapowe lub niebiesko-zielone
- Wartość ciągłej integracji i ciągłego dostarczania
- Studium przypadku - linie lotnicze Cloudy Skies
- Podsumowanie
- W kierunku bardziej zrównoważonego oprogramowania
- Pytania
- Więcej informacji
- Refaktoryzacja w zwinnym środowisku