Promocja!

REFAKTORYZACJA W C# JAK ZREDUKOWAĆ DŁUG TECHNICZNY

Pierwotna cena wynosiła: 99.00zł.Aktualna cena wynosi: 89.10zł.

Na stanie

Refaktoryzacja w C#. Jak zredukować dług techniczny i optymalizować kod z Visual Studio, .NET 8 i C# 12

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
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
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

 

Autor

ISBN

978-83-289-1680-7

Liczba stron

Rok wydania

Wydawca

Opinie

Na razie nie ma opinii o produkcie.

Napisz pierwszą opinię o „REFAKTORYZACJA W C# JAK ZREDUKOWAĆ DŁUG TECHNICZNY”

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *