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

Termin dług techniczny oznacza zbiór skrótów, niedociągnięć i potworków projektowych, które powstają w trakcie ewolucyjnego rozwoju programu. Jeśli się ich nie zlikwiduje, mogą dramatycznie spowolnić pracę nad programem. Rozwiązywanie tego typu problemów jest nazywane refaktoryzacją i każdy …

od 57,99 zł Najbliżej: 0,4 km

Liczba ofert: 1

Oferta sklepu

Opis

Termin dług techniczny oznacza zbiór skrótów, niedociągnięć i potworków projektowych, które powstają w trakcie ewolucyjnego rozwoju programu. Jeśli się ich nie zlikwiduje, mogą dramatycznie spowolnić pracę nad programem. Rozwiązywanie tego typu problemów jest nazywane refaktoryzacją i każdy programista powinien umieć ją przeprowadzać. Dzięki tej przystępnej, świetnie napisanej książce dowiesz się, czym jest dług techniczny, co prowadzi do jego powstawania i w jaki sposób można go bezpiecznie zrefaktoryzować przy użyciu nowoczesnych narzędzi dostępnych w środowisku Visual Studio, a także najnowszych składników języka C# 12 i platformy .NET 8. Nauczysz się też korzystać z zaawansowanych testów jednostkowych tworzonych przy użyciu xUnit i takich bibliotek jak Moq, Snapper czy Scientist.NET. Dowiesz się, jak stosować zasady SOLID, aby tworzyć łatwy w utrzymaniu kod, poznasz również techniki programowania defensywnego, które można stosować w nowszych wersjach C#. Ponadto nauczysz się przeprowadzać analizy kodu i pisać własne analizatory Roslyn do wykrywania i rozwiązywania problemów typowych dla Twojego projektu. Najciekawsze zagadnienia: najważniejsze informacje o długu technicznym różne sposoby refaktoryzacji klas, metod i wierszy kodu efektywne testy jednostkowe zasady SOLID i tworzenie kodu łatwego w utrzymaniu korzystanie ze sztucznej inteligencji GitHub Copilot standardy kodowania w zwinnych zespołach 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 O autorze: Matt Eland otrzymał od Microsoftu tytuł MVP w dziedzinie sztucznej inteligencji. Z platformy .NET korzysta od 2001 roku. Obecnie jest specjalistą w zakresie sztucznej inteligencji i starszym konsultantem w Leading EDJE. Działa również jako prelegent i współorganizator Central Ohio .NET Developers Group.

Specyfikacja

Podstawowe informacje

Autor
  • Matt Eland
Wydawnictwo
  • Helion
Okładka
  • Miękka
Rok wydania
  • 2025
Ilość stron
  • 408
Język oryginału
  • Angielski
Tematyka
  • Programowanie
  • Projektowanie
ISBN
  • 9788328916807
Model
  • 9788328916807